Full Code of LaravelDaily/FilaStart for AI

main c1a8ba98dbc9 cached
216 files
6.0 MB
1.6M tokens
7438 symbols
1 requests
Download .txt
Showing preview only (6,325K chars total). Download the full file or copy to clipboard to get everything.
Repository: LaravelDaily/FilaStart
Branch: main
Commit: c1a8ba98dbc9
Files: 216
Total size: 6.0 MB

Directory structure:
gitextract_6saz8xc6/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       └── tests.yml
├── .gitignore
├── .readme/
│   ├── CustomFields.md
│   ├── ModifyingTemplates.md
│   ├── ModulesReadme.md
│   └── excalidraw/
│       └── FileCopyingGraph.excalidraw
├── README.md
├── app/
│   ├── Enums/
│   │   ├── CrudFieldTypes.php
│   │   ├── CrudFieldValidation.php
│   │   ├── CrudTypes.php
│   │   ├── HeroIcons.php
│   │   └── PanelTypes.php
│   ├── Filament/
│   │   ├── Pages/
│   │   │   ├── CreatePanelPage.php
│   │   │   ├── PanelDeploymentPage.php
│   │   │   └── PanelModuleManagement.php
│   │   └── Resources/
│   │       ├── CrudResource/
│   │       │   ├── Pages/
│   │       │   │   ├── CreateCrud.php
│   │       │   │   ├── EditCrud.php
│   │       │   │   └── ListCruds.php
│   │       │   └── RelationManagers/
│   │       │       └── FieldsRelationManager.php
│   │       └── CrudResource.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Controller.php
│   │   └── Responses/
│   │       └── LoginResponse.php
│   ├── Interfaces/
│   │   └── ModuleBase.php
│   ├── Jobs/
│   │   └── Generator/
│   │       ├── GeneratePanelCodeJob.php
│   │       └── PanelCreatedJob.php
│   ├── Models/
│   │   ├── Crud.php
│   │   ├── CrudField.php
│   │   ├── CrudFieldOptions.php
│   │   ├── Module.php
│   │   ├── Panel.php
│   │   ├── PanelDeployment.php
│   │   ├── PanelFile.php
│   │   └── User.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── Filament/
│   │   │   └── BuilderPanelProvider.php
│   │   ├── HorizonServiceProvider.php
│   │   └── TelescopeServiceProvider.php
│   └── Services/
│       ├── ModuleService.php
│       └── PanelService.php
├── artisan
├── bootstrap/
│   ├── app.php
│   ├── cache/
│   │   └── .gitignore
│   └── providers.php
├── composer.json
├── config/
│   ├── app.php
│   ├── auth.php
│   ├── cache.php
│   ├── database.php
│   ├── filament.php
│   ├── filesystems.php
│   ├── horizon.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── reverb.php
│   ├── services.php
│   ├── session.php
│   └── telescope.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── 0001_01_01_000000_create_users_table.php
│   │   ├── 0001_01_01_000001_create_cache_table.php
│   │   ├── 0001_01_01_000002_create_jobs_table.php
│   │   ├── 2024_03_28_095305_create_panels_table.php
│   │   ├── 2024_04_02_141033_create_cruds_table.php
│   │   ├── 2024_04_02_141038_create_crud_fields_table.php
│   │   ├── 2024_04_03_105626_create_crud_field_options_table.php
│   │   ├── 2024_04_04_154557_create_panel_files_table.php
│   │   ├── 2024_04_04_155618_create_modules_table.php
│   │   ├── 2024_04_04_162604_create_module_panel_table.php
│   │   ├── 2024_04_09_153641_create_panel_deployments_table.php
│   │   └── 2024_04_18_124339_create_telescope_entries_table.php
│   └── seeders/
│       └── DatabaseSeeder.php
├── package.json
├── phpstan.neon
├── phpunit.xml
├── postcss.config.js
├── public/
│   ├── .htaccess
│   ├── css/
│   │   └── filament/
│   │       ├── filament/
│   │       │   └── app.css
│   │       ├── forms/
│   │       │   └── forms.css
│   │       └── support/
│   │           └── support.css
│   ├── index.php
│   ├── js/
│   │   └── filament/
│   │       ├── filament/
│   │       │   ├── app.js
│   │       │   └── echo.js
│   │       ├── forms/
│   │       │   └── components/
│   │       │       ├── color-picker.js
│   │       │       ├── date-time-picker.js
│   │       │       ├── file-upload.js
│   │       │       ├── key-value.js
│   │       │       ├── markdown-editor.js
│   │       │       ├── rich-editor.js
│   │       │       ├── select.js
│   │       │       ├── tags-input.js
│   │       │       └── textarea.js
│   │       ├── notifications/
│   │       │   └── notifications.js
│   │       ├── support/
│   │       │   ├── async-alpine.js
│   │       │   └── support.js
│   │       ├── tables/
│   │       │   └── components/
│   │       │       └── table.js
│   │       └── widgets/
│   │           └── components/
│   │               ├── chart.js
│   │               └── stats-overview/
│   │                   └── stat/
│   │                       └── chart.js
│   ├── robots.txt
│   └── vendor/
│       ├── horizon/
│       │   ├── app-dark.css
│       │   ├── app.css
│       │   ├── app.js
│       │   ├── manifest.json
│       │   ├── mix-manifest.json
│       │   ├── styles-dark.css
│       │   └── styles.css
│       └── telescope/
│           ├── app-dark.css
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── css/
│   │   └── app.css
│   ├── js/
│   │   ├── app.js
│   │   ├── bootstrap.js
│   │   └── echo.js
│   └── views/
│       └── filament/
│           ├── footer.blade.php
│           └── pages/
│               ├── create-panel-page.blade.php
│               ├── panel-deployment-page.blade.php
│               ├── panel-module-management.blade.php
│               ├── panels/
│               │   └── edit-panel.blade.php
│               ├── panels-create-panel.blade.php
│               ├── panels-edit-panel.blade.php
│               └── panels-panels-list.blade.php
├── routes/
│   ├── auth.php
│   ├── console.php
│   └── web.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── debugbar/
│   │   └── .gitignore
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── systems/
│   └── generators/
│       ├── filament3/
│       │   ├── composer.json
│       │   └── src/
│       │       ├── Filament3ServiceProvider.php
│       │       ├── Generators/
│       │       │   ├── Fields/
│       │       │   │   ├── BaseField.php
│       │       │   │   ├── BelongsToField.php
│       │       │   │   ├── BelongsToManyField.php
│       │       │   │   ├── CheckboxField.php
│       │       │   │   ├── DateField.php
│       │       │   │   ├── DateTimeField.php
│       │       │   │   ├── EmailField.php
│       │       │   │   ├── FileField.php
│       │       │   │   ├── FloatField.php
│       │       │   │   ├── IdField.php
│       │       │   │   ├── ImageField.php
│       │       │   │   ├── MoneyField.php
│       │       │   │   ├── PasswordField.php
│       │       │   │   ├── RetrieveGeneratorForField.php
│       │       │   │   ├── TextAreaField.php
│       │       │   │   └── TextField.php
│       │       │   └── Files/
│       │       │       ├── CreateFile.php
│       │       │       ├── EditFile.php
│       │       │       ├── FileBase.php
│       │       │       ├── FileReplacements.php
│       │       │       ├── ListFile.php
│       │       │       └── ResourceFile.php
│       │       ├── IndentsLines.php
│       │       ├── Jobs/
│       │       │   ├── CreateCreateFileJob.php
│       │       │   ├── CreateCrudJob.php
│       │       │   ├── CreateEditFileJob.php
│       │       │   ├── CreateListFileJob.php
│       │       │   └── CreateResourceFileJob.php
│       │       ├── Modules/
│       │       │   ├── AssetManagementModule.php
│       │       │   ├── BaseModule.php
│       │       │   ├── ClientManagementModule.php
│       │       │   └── ModuleManager.php
│       │       └── templates/
│       │           ├── createPage.blade.php
│       │           ├── editPage.blade.php
│       │           ├── listPage.blade.php
│       │           └── resource.blade.php
│       └── laravel11/
│           ├── composer.json
│           └── src/
│               ├── Generators/
│               │   ├── MigrationGenerator.php
│               │   ├── MigrationLineGenerator.php
│               │   └── ModelGenerator.php
│               ├── Jobs/
│               │   ├── CreateManyToManyMigrationJob.php
│               │   ├── CreateMigrationJob.php
│               │   └── CreateModelJob.php
│               ├── Laravel11ServiceProvider.php
│               └── templates/
│                   ├── cacheTable.blade.php
│                   ├── jobsTable.blade.php
│                   ├── migration.blade.php
│                   ├── model.blade.php
│                   └── sessionTable.blade.php
├── tailwind.config.js
├── tests/
│   ├── Feature/
│   │   ├── Crud/
│   │   │   ├── CrudFieldsTest.php
│   │   │   └── CrudTest.php
│   │   ├── Filament3/
│   │   │   ├── Fields/
│   │   │   │   ├── BelongsToFieldTest.php
│   │   │   │   ├── BelongsToManyFieldTest.php
│   │   │   │   ├── CheckboxFieldTest.php
│   │   │   │   ├── DateFieldTest.php
│   │   │   │   ├── DateTimeFieldTest.php
│   │   │   │   ├── EmailFieldTest.php
│   │   │   │   ├── FileFieldTest.php
│   │   │   │   ├── FloatFieldTest.php
│   │   │   │   ├── IdFieldTest.php
│   │   │   │   ├── ImageFieldTest.php
│   │   │   │   ├── MoneyFieldTest.php
│   │   │   │   ├── PasswordFieldTest.php
│   │   │   │   ├── TextFieldTest.php
│   │   │   │   └── TextareaFieldTest.php
│   │   │   └── Files/
│   │   │       ├── CreateFileTest.php
│   │   │       ├── EditFileTest.php
│   │   │       ├── FileReplacementsTest.php
│   │   │       ├── ListFileTest.php
│   │   │       └── ResourceFileTest.php
│   │   ├── Laravel11/
│   │   │   └── Files/
│   │   │       ├── MigrationTest.php
│   │   │       └── ModelTest.php
│   │   └── Panel/
│   │       └── PanelTest.php
│   ├── Pest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
└── vite.config.js

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

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
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 eol=lf

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

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


================================================
FILE: .github/workflows/tests.yml
================================================
name: Run tests

on:
  pull_request:
    branches: [ "main" ]

jobs:
  laravel-tests:

    runs-on: ubuntu-latest

    steps:
    - uses: shivammathur/setup-php@v2
      with:
        php-version: '8.3'
    - uses: actions/checkout@v3
    - name: Copy .env
      run: php -r "file_exists('.env') || copy('.env.example', '.env');"
    - name: Install Dependencies
      run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
    - name: Generate key
      run: php artisan key:generate
    - name: Directory Permissions
      run: chmod -R 777 storage bootstrap/cache
    - name: Create Database
      run: |
        mkdir -p database
        touch database/database.sqlite
    - name: Execute tests (Unit and Feature tests) via Pest
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
      run: vendor/bin/pest


================================================
FILE: .gitignore
================================================
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.env.production
.phpunit.result.cache
Homestead.json
Homestead.yaml
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode
dump.rdb


================================================
FILE: .readme/CustomFields.md
================================================
FilaStart is built with customization in mind. You can create your own custom fields to suit your needs. Here's a quick guide on how to make a custom field:

## Defining the Field

First, we need to tell our system that this field exists. To do this, open up:

**app/Enums/CrudFieldTypes.php**

And add a new field type:

```php
// ...
const CUSTOM_FIELD = 'custom_field';
// ...
```

Of course, remember to add it to the `getLabel()` method, as it will automatically populate the select field.

## Creating the Field Class

Next, we need a new class for our field. Create a new file in:

**systems/generators/filament3/src/Generators/Fields**

**Note:** You can copy and modify one of the existing fields to suit your needs.

Once that is done - you can override methods as you need. But here's a few important ones:

```php
// Class to use in the form
protected string $formComponentClass = 'DatePicker';

// Class to use in the table
protected string $tableColumnClass = 'TextColumn';

// The key to use in the form
protected function resolveFormComponent(): void
{
    $this->formKey = $this->field->key;
}

// The key to use in the table
protected function resolveTableColumn(): void
{
    $this->tableKey = $this->field->key;
}
```

Once this is done, we have another step to take - register the field in the generator.

Open up `systems/generators/filament3/src/Generators/Fields/RetrieveGeneratorForField.php` and add your field to the match statement.

## Using the Field

You can now use your field in the CRUD editor. Select the "Custom Field" type and fill in the form as you would with any other field.

## Testing

We strongly recommend testing your field before using it in production. To do this, create a new file in `tests/Feature/Filament3/Fields` and make a test for your field.

## Other Customizations

When creating a new field, remember to look at `systems/generators/filament3/src/Generators/Fields/BaseField.php`, as this is the base class for all fields. You can override any method you need in your custom field.

================================================
FILE: .readme/ModifyingTemplates.md
================================================
While our generator covers most basic things, you should add different stuff to your files. To do that, you can modify the templates we use:

## Modifying Filament Templates

Our Filament file templates are in the `systems/generators/filament3/src/templates` directory.

You can modify the files in that directory to change the generated code.

**Note:** Sometimes, you might need to modify the generators themselves. Search for the file name in the `systems/generators/filament3/src/Generators` directory and modify the file.

## Modifying Laravel Templates

Our Laravel file templates are in the `systems/generators/laravel11/src/templates` directory.

As with Filament, you can modify the files in that directory to change the generated code.

**Note:** Sometimes, you might need to modify the generators themselves. Search for the file name in the `systems/generators/laravel11/src/Generators` directory and modify the file.

---

File templates are written in Blade, so you can use all its features.

================================================
FILE: .readme/ModulesReadme.md
================================================
A quick overview of how Modules work.

## What is a Module?

In this system, a module is a set of pre-defined CRUD details. For example, a module can contain more information for a `User` CRUD.

This module will have the following details:

- Unlimited amount of CRUDs inside
  - Each CRUD will have its own details
  - Each CRUD will have its own fields
    - Each field will have its own details
    
These modules are quickly installed using `app/Interfaces/ModuleBase.php` methods `install()` and `uninstall()`.

Each module, if needed, can override those methods.

---

## How to create a Module?

To create a module, you have a few options:

1. Start from scratch
2. Copy one of the existing modules and modify it

In both cases, the result should be the same:

1. A file in the `systems/generators/filament3/src/Modules` folder
2. A-line with unique `slug` in `systems/generators/filament3/src/Modules/ModuleManager.php.`

Now, each module should have an implementation of the `getCruds()` method. This method should return an array of CRUDs. For example, take from `BaseModule`:

```php
public function getCruds(): array
{
    return [
        (new Crud([
            'type' => CrudTypes::PARENT,
            'title' => str('User Management')->singular()->studly(),
            'visual_title' => 'User Management',
            'icon' => 'heroicon-o-users',
            'menu_order' => 1,
            'is_hidden' => false,
            'module_crud' => true,
            'system' => true,
        ])),
        (new Crud([
            'parent_id' => str('User Management')->singular()->studly(),
            'type' => CrudTypes::CRUD,
            'title' => str('Permissions')->singular()->studly(),
            'visual_title' => 'Permissions',
            'icon' => '',
            'menu_order' => 1,
            'is_hidden' => false,
            'module_crud' => true,
            'system' => true,
        ]))
            ->setRelation('fields', [
                $this->getIDField(),
                new CrudField([
                    'type' => CrudFieldTypes::TEXT,
                    'key' => str('Title')->lower()
                        ->snake()
                        ->toString(),
                    'label' => 'Title',
                    'validation' => 'required',
                    'in_list' => true,
                    'in_show' => true,
                    'in_create' => true,
                    'in_edit' => true,
                    'nullable' => false,
                    'tooltip' => null,
                    'system' => true,
                    'enabled' => true,
                    'order' => 2,
                ]),
                $this->getCreatedAtField(3),
                $this->getUpdatedAtField(4),
                $this->getDeletedAtField(5),
            ]
            ),
    ];
}
```

Everything is done via new Module instances. We don't save them to the database; we use them as DTOs.

---

## Installing / Removing a Module

Installation/Removal is handled automatically in the system. It is done via:

```php
ModuleService::getModuleClass(App\Models\Panel, 'module-slug-goes-here')
    ->install(App\Models\Panel);
```

And:

```php
ModuleService::getModuleClass(App\Models\Panel, 'module-slug-goes-here')
    ->uninstall(App\Models\Panel);
```

Both methods accept a `Panel` (the current admin panel) as a parameter and a module SLUG.

---

================================================
FILE: .readme/excalidraw/FileCopyingGraph.excalidraw
================================================
{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    {
      "id": "HdKqsHaGE-pjzDZ0zsh67",
      "type": "rectangle",
      "x": -2000,
      "y": -14100,
      "width": 500,
      "height": 60,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a0",
      "roundness": {
        "type": 3
      },
      "seed": 1281040923,
      "version": 34,
      "versionNonce": 1790682677,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "st8mK2hHkxnHy5KqHNwir"
        },
        {
          "id": "tn6RqKXmW-_N45hyUmOqv",
          "type": "arrow"
        }
      ],
      "updated": 1714714143978,
      "link": null,
      "locked": false
    },
    {
      "id": "st8mK2hHkxnHy5KqHNwir",
      "type": "text",
      "x": -1855.46875,
      "y": -14082,
      "width": 210.9375,
      "height": 24,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a0V",
      "roundness": null,
      "seed": 1972854133,
      "version": 34,
      "versionNonce": 512716565,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714139206,
      "link": null,
      "locked": false,
      "text": "storage/app/panels",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "HdKqsHaGE-pjzDZ0zsh67",
      "originalText": "storage/app/panels",
      "lineHeight": 1.2
    },
    {
      "id": "tn6RqKXmW-_N45hyUmOqv",
      "type": "arrow",
      "x": -1780,
      "y": -14039,
      "width": 0,
      "height": 138,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a3",
      "roundness": {
        "type": 2
      },
      "seed": 114585045,
      "version": 25,
      "versionNonce": 109821979,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "8iCfW5-AHoma5z0AMfK1C"
        }
      ],
      "updated": 1714714359668,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          138
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": {
        "elementId": "HdKqsHaGE-pjzDZ0zsh67",
        "focus": 0.12,
        "gap": 1
      },
      "endBinding": {
        "elementId": "B7V2-TN8ycyMlafVW93a7",
        "focus": -0.12,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "8iCfW5-AHoma5z0AMfK1C",
      "type": "text",
      "x": -1867.890625,
      "y": -13992,
      "width": 175.78125,
      "height": 24,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a4",
      "roundness": null,
      "seed": 1853185269,
      "version": 21,
      "versionNonce": 950458837,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714148596,
      "link": null,
      "locked": false,
      "text": "Find your panel",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "tn6RqKXmW-_N45hyUmOqv",
      "originalText": "Find your panel",
      "lineHeight": 1.2
    },
    {
      "id": "2JSoja1q1FP10BFUTC3yK",
      "type": "rectangle",
      "x": -2000,
      "y": -14200,
      "width": 500,
      "height": 60,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a5",
      "roundness": {
        "type": 3
      },
      "seed": 1195644731,
      "version": 38,
      "versionNonce": 259441845,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "m3xHqgChnSk86Eir5BoJr"
        }
      ],
      "updated": 1714714176153,
      "link": null,
      "locked": false
    },
    {
      "id": "m3xHqgChnSk86Eir5BoJr",
      "type": "text",
      "x": -1861.328125,
      "y": -14182,
      "width": 222.65625,
      "height": 24,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a5V",
      "roundness": null,
      "seed": 1765408949,
      "version": 66,
      "versionNonce": 1846265589,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714246227,
      "link": null,
      "locked": false,
      "text": "Copying The Project",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "2JSoja1q1FP10BFUTC3yK",
      "originalText": "Copying The Project",
      "lineHeight": 1.2
    },
    {
      "id": "B7V2-TN8ycyMlafVW93a7",
      "type": "rectangle",
      "x": -2000,
      "y": -13900,
      "width": 500,
      "height": 60,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a7",
      "roundness": {
        "type": 3
      },
      "seed": 594182747,
      "version": 39,
      "versionNonce": 1254571483,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "tn6RqKXmW-_N45hyUmOqv",
          "type": "arrow"
        },
        {
          "type": "text",
          "id": "Zy_QwYH0hAT6vtZ3qIOhK"
        },
        {
          "id": "sCeFTTbHepZcAHZSD55A6",
          "type": "arrow"
        },
        {
          "id": "yL1OHK2j1LUa5yyVWpp_p",
          "type": "arrow"
        }
      ],
      "updated": 1714714367292,
      "link": null,
      "locked": false
    },
    {
      "id": "Zy_QwYH0hAT6vtZ3qIOhK",
      "type": "text",
      "x": -1884.765625,
      "y": -13882,
      "width": 269.53125,
      "height": 24,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "a7V",
      "roundness": null,
      "seed": 87740181,
      "version": 78,
      "versionNonce": 804375701,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714321891,
      "link": null,
      "locked": false,
      "text": "Copy the Required Files",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "B7V2-TN8ycyMlafVW93a7",
      "originalText": "Copy the Required Files",
      "lineHeight": 1.2
    },
    {
      "id": "sCeFTTbHepZcAHZSD55A6",
      "type": "arrow",
      "x": -2000.4961389383566,
      "y": -13839.131756857874,
      "width": 78.93243249021407,
      "height": 138.13175685787428,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aB",
      "roundness": {
        "type": 2
      },
      "seed": 1511321877,
      "version": 257,
      "versionNonce": 1615301461,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "tB07TeS6nu2dP1_CyEjRB"
        }
      ],
      "updated": 1714714394625,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          -78.93243249021407,
          138.13175685787428
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": {
        "elementId": "B7V2-TN8ycyMlafVW93a7",
        "focus": 0.8716577540106952,
        "gap": 1
      },
      "endBinding": {
        "elementId": "TGDsxwA7lUMh7RrFg0Fd2",
        "focus": 0.024390243902439025,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "tB07TeS6nu2dP1_CyEjRB",
      "type": "text",
      "x": -2139.571730183464,
      "y": -13794.065878428937,
      "width": 199.21875,
      "height": 48,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aBV",
      "roundness": null,
      "seed": 419520635,
      "version": 40,
      "versionNonce": 413935611,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714357724,
      "link": null,
      "locked": false,
      "text": "Existing \nModels/Migrations",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "sCeFTTbHepZcAHZSD55A6",
      "originalText": "Existing Models/Migrations",
      "lineHeight": 1.2
    },
    {
      "id": "TGDsxwA7lUMh7RrFg0Fd2",
      "type": "rectangle",
      "x": -2200,
      "y": -13700,
      "width": 200,
      "height": 60,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aC",
      "roundness": {
        "type": 3
      },
      "seed": 2132288379,
      "version": 30,
      "versionNonce": 1654443765,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "l7GRggyXOraNWqCMNFkBQ"
        },
        {
          "id": "sCeFTTbHepZcAHZSD55A6",
          "type": "arrow"
        },
        {
          "id": "zNDlBTugyyJFoZve6loSw",
          "type": "arrow"
        }
      ],
      "updated": 1714714423443,
      "link": null,
      "locked": false
    },
    {
      "id": "l7GRggyXOraNWqCMNFkBQ",
      "type": "text",
      "x": -2182.03125,
      "y": -13682,
      "width": 164.0625,
      "height": 24,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aD",
      "roundness": null,
      "seed": 1154672155,
      "version": 37,
      "versionNonce": 1746169717,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714395835,
      "link": null,
      "locked": false,
      "text": "app/Filament/*",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "TGDsxwA7lUMh7RrFg0Fd2",
      "originalText": "app/Filament/*",
      "lineHeight": 1.2
    },
    {
      "type": "arrow",
      "version": 548,
      "versionNonce": 2047655483,
      "index": "aE",
      "isDeleted": false,
      "id": "yL1OHK2j1LUa5yyVWpp_p",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1797.3404255319147,
      "y": -13839,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 2.6404408388184493,
      "height": 138,
      "seed": 1726347579,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [
        {
          "type": "text",
          "id": "o1JOy4Fap8jVQshEyhF8B"
        }
      ],
      "updated": 1714714391087,
      "link": null,
      "locked": false,
      "startBinding": {
        "elementId": "B7V2-TN8ycyMlafVW93a7",
        "focus": 0.1865607819181429,
        "gap": 1
      },
      "endBinding": {
        "elementId": "O4uuHTQdnAXtukQTjE3JY",
        "focus": -0.005707328209420906,
        "gap": 1
      },
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "points": [
        [
          0,
          0
        ],
        [
          -2.6404408388184493,
          138
        ]
      ]
    },
    {
      "type": "text",
      "version": 93,
      "versionNonce": 1436139413,
      "index": "aF",
      "isDeleted": false,
      "id": "o1JOy4Fap8jVQshEyhF8B",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1858.59375,
      "y": -13794.934121571063,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 117.1875,
      "height": 48,
      "seed": 1810438619,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714383640,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "Existing \nMigrations",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "yL1OHK2j1LUa5yyVWpp_p",
      "originalText": "Existing Migrations",
      "lineHeight": 1.2
    },
    {
      "type": "rectangle",
      "version": 50,
      "versionNonce": 1095779765,
      "index": "aG",
      "isDeleted": false,
      "id": "O4uuHTQdnAXtukQTjE3JY",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1900,
      "y": -13700,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 200,
      "height": 60,
      "seed": 1895769723,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 3
      },
      "boundElements": [
        {
          "type": "text",
          "id": "kwjzgdDkH7KWkhSLz6OrF"
        },
        {
          "id": "yL1OHK2j1LUa5yyVWpp_p",
          "type": "arrow"
        }
      ],
      "updated": 1714714386622,
      "link": null,
      "locked": false
    },
    {
      "type": "text",
      "version": 61,
      "versionNonce": 1411586869,
      "index": "aH",
      "isDeleted": false,
      "id": "kwjzgdDkH7KWkhSLz6OrF",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1829.296875,
      "y": -13682,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 58.59375,
      "height": 24,
      "seed": 1290444571,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714393275,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "app/*",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "O4uuHTQdnAXtukQTjE3JY",
      "originalText": "app/*",
      "lineHeight": 1.2
    },
    {
      "type": "arrow",
      "version": 705,
      "versionNonce": 297007131,
      "index": "aI",
      "isDeleted": false,
      "id": "VsmaAU3B877lC0hfAPgjK",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1537.3404255319147,
      "y": -13840,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 30.034381204072133,
      "height": 139,
      "seed": 1991077621,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [
        {
          "type": "text",
          "id": "icY-Z99fuMe7P_F1zmIuQ"
        }
      ],
      "updated": 1714714410236,
      "link": null,
      "locked": false,
      "startBinding": null,
      "endBinding": {
        "elementId": "NLMGJP-2hMo80hgHxOCi-",
        "focus": -0.005707328209420318,
        "gap": 1
      },
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "points": [
        [
          0,
          0
        ],
        [
          30.034381204072133,
          139
        ]
      ]
    },
    {
      "type": "text",
      "version": 114,
      "versionNonce": 2071591515,
      "index": "aJ",
      "isDeleted": false,
      "id": "icY-Z99fuMe7P_F1zmIuQ",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1614.8325209513239,
      "y": -13783,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 152.34375,
      "height": 24,
      "seed": 1164822613,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714407387,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "Fresh Project",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "VsmaAU3B877lC0hfAPgjK",
      "originalText": "Fresh Project",
      "lineHeight": 1.2
    },
    {
      "type": "rectangle",
      "version": 75,
      "versionNonce": 1552704603,
      "index": "aK",
      "isDeleted": false,
      "id": "NLMGJP-2hMo80hgHxOCi-",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1600,
      "y": -13700,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 200,
      "height": 60,
      "seed": 26998197,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 3
      },
      "boundElements": [
        {
          "type": "text",
          "id": "S2-hOy0gSN7wkTgNuLX6q"
        },
        {
          "id": "VsmaAU3B877lC0hfAPgjK",
          "type": "arrow"
        }
      ],
      "updated": 1714714408673,
      "link": null,
      "locked": false
    },
    {
      "type": "text",
      "version": 103,
      "versionNonce": 1639489493,
      "index": "aL",
      "isDeleted": false,
      "id": "S2-hOy0gSN7wkTgNuLX6q",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1552.734375,
      "y": -13682,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 105.46875,
      "height": 24,
      "seed": 1717401365,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714416080,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "All Files",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "NLMGJP-2hMo80hgHxOCi-",
      "originalText": "All Files",
      "lineHeight": 1.2
    },
    {
      "id": "zNDlBTugyyJFoZve6loSw",
      "type": "arrow",
      "x": -2080,
      "y": -13640,
      "width": 0,
      "height": 80,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aM",
      "roundness": {
        "type": 2
      },
      "seed": 678981269,
      "version": 10,
      "versionNonce": 299944341,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714423443,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          80
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": {
        "elementId": "TGDsxwA7lUMh7RrFg0Fd2",
        "focus": -0.2,
        "gap": 1
      },
      "endBinding": null,
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "pXozgoD6M49_TVaJmjMGC",
      "type": "rectangle",
      "x": -2220,
      "y": -13560,
      "width": 240,
      "height": 120,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aN",
      "roundness": {
        "type": 3
      },
      "seed": 1557394299,
      "version": 28,
      "versionNonce": 410291701,
      "isDeleted": false,
      "boundElements": [
        {
          "type": "text",
          "id": "Ehkrqy9fTeR3L-J0qMzu4"
        }
      ],
      "updated": 1714714448154,
      "link": null,
      "locked": false
    },
    {
      "id": "Ehkrqy9fTeR3L-J0qMzu4",
      "type": "text",
      "x": -2199.609375,
      "y": -13548,
      "width": 199.21875,
      "height": 96,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": "aNV",
      "roundness": null,
      "seed": 205720533,
      "version": 68,
      "versionNonce": 2130249557,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1714714448154,
      "link": null,
      "locked": false,
      "text": "Open the project \nand everything \nshould be in the \nsidebar",
      "fontSize": 20,
      "fontFamily": 3,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "pXozgoD6M49_TVaJmjMGC",
      "originalText": "Open the project and everything should be in the sidebar",
      "lineHeight": 1.2
    },
    {
      "type": "arrow",
      "version": 27,
      "versionNonce": 1908621461,
      "index": "aP",
      "isDeleted": false,
      "id": "cWNJu0Dzwp87I6YtemQnS",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1780,
      "y": -13640,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 0,
      "height": 80,
      "seed": 935470875,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [],
      "updated": 1714714452774,
      "link": null,
      "locked": false,
      "startBinding": null,
      "endBinding": null,
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "points": [
        [
          0,
          0
        ],
        [
          0,
          80
        ]
      ]
    },
    {
      "type": "rectangle",
      "version": 45,
      "versionNonce": 756573685,
      "index": "aQ",
      "isDeleted": false,
      "id": "sTj3jkq6I5QLc8oOpKXZJ",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1920,
      "y": -13560,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 240,
      "height": 120,
      "seed": 281316283,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 3
      },
      "boundElements": [
        {
          "type": "text",
          "id": "Y8RtpphV_QZRKkPeVB-W1"
        }
      ],
      "updated": 1714714452774,
      "link": null,
      "locked": false
    },
    {
      "type": "text",
      "version": 85,
      "versionNonce": 23191381,
      "index": "aR",
      "isDeleted": false,
      "id": "Y8RtpphV_QZRKkPeVB-W1",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1899.609375,
      "y": -13548,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 199.21875,
      "height": 96,
      "seed": 827415643,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714452774,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "Open the project \nand everything \nshould be in the \nsidebar",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "sTj3jkq6I5QLc8oOpKXZJ",
      "originalText": "Open the project and everything should be in the sidebar",
      "lineHeight": 1.2
    },
    {
      "type": "arrow",
      "version": 49,
      "versionNonce": 1068732827,
      "index": "aS",
      "isDeleted": false,
      "id": "JoXiC0DNXKjLzI0PEm25t",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1460,
      "y": -13640,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 0,
      "height": 80,
      "seed": 1198087957,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 2
      },
      "boundElements": [],
      "updated": 1714714457724,
      "link": null,
      "locked": false,
      "startBinding": null,
      "endBinding": null,
      "lastCommittedPoint": null,
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "points": [
        [
          0,
          0
        ],
        [
          0,
          80
        ]
      ]
    },
    {
      "type": "rectangle",
      "version": 67,
      "versionNonce": 472163899,
      "index": "aT",
      "isDeleted": false,
      "id": "Iv8VuiA7xUwRxzJn63tUy",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1600,
      "y": -13560,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 240,
      "height": 120,
      "seed": 1433842805,
      "groupIds": [],
      "frameId": null,
      "roundness": {
        "type": 3
      },
      "boundElements": [
        {
          "type": "text",
          "id": "30GbzPVB9xg5OQiz2Ixgk"
        }
      ],
      "updated": 1714714457724,
      "link": null,
      "locked": false
    },
    {
      "type": "text",
      "version": 172,
      "versionNonce": 357042523,
      "index": "aU",
      "isDeleted": false,
      "id": "30GbzPVB9xg5OQiz2Ixgk",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "angle": 0,
      "x": -1591.328125,
      "y": -13536,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "width": 222.65625,
      "height": 72,
      "seed": 1441947093,
      "groupIds": [],
      "frameId": null,
      "roundness": null,
      "boundElements": [],
      "updated": 1714714470023,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 3,
      "text": "Run Migrations and \nopen the project to\nsee all resources",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "Iv8VuiA7xUwRxzJn63tUy",
      "originalText": "Run Migrations and open the project to see all resources",
      "lineHeight": 1.2
    }
  ],
  "appState": {
    "gridSize": 20,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}

================================================
FILE: README.md
================================================
Build your Filament panel **visually** with... Filament!

Crud List example:
![](./.readme/images/crudListExample.png)

Crud Form example:
![](./.readme/images/crudFormExample.png)

Field Form example:
![](./.readme/images/crudFieldFormExample.png)

Code Generation/Download example:
![](./.readme/images/codeDownloadExample.png)

FilaStart is free and fully open-source.

---

## How it Works

FilaStart is a Laravel+Filament application that generates the code, which you should then use in your **already-existing other separate** Laravel+Filament project.

After you define your CRUDs with the visual editor, FilaStart will generate three things for you:

- Laravel Migrations
- Eloquent Models
- Filament Resources

Then, you can copy the generated files into your Laravel project and manually add more functionality.


https://github.com/LaravelDaily/FilaStart/assets/3809773/7e895e53-dcd9-4682-b485-db5c72f12d06


---

## Installation Instructions

FilaStart is a Laravel+Filament application that is installable on your local machine. **It's not a Laravel package or Filament plugin**.

The requirements are the same as those for the Laravel 11 and Filament 3 versions: the most important requirement is PHP 8.2+.

Here's the list of commands for the installation:

```sh
git clone https://github.com/LaravelDaily/FilaStart
cp .env.example .env  # Edit your .env configuration
composer install
php artisan key:generate
php artisan storage:link
touch database/database.sqlite  # If you want to use SQLite
php artisan migrate --seed   # It will create a demo admin user
```

Then, launch `/builder` URL and you should see a familiar Filament login screen:

![](./.readme/images/loginScreen.png)

Log in with credentials `admin@admin.com` and `password`

---

## Usage

We know the struggle of setting up a new tool, so here is a quick overview of how to use FilaStart:

### Creating Panels

The first time you log in, you will see a "Create Panel" form appear:

![](./.readme/images/createPanelForm.png)

Just enter the name of your panel and click "Create Panel". This will take you to the CRUDs page:

![](./.readme/images/mainDashboard.png)

Now, if you want to create another panel, you have to click the current panel name in the top-left corner:

![](./.readme/images/panelDropdown.png)

From there, it is the same process as before.

### Creating Your CRUDs

Now that we have our panel - we can create our CRUDs. Click the "New CRUD" button:

![](./.readme/images/createCrudButton.png)

From there, fill in the details in the form:

![](./.readme/images/createCrudForm.png)

In this form, you have a few options:

- **Parent** - Select a parent CRUD here to create a sub-menu item.
- **Type** - To create a "Parent" CRUD, select the "Parent" type. Otherwise, select "CRUD" to create a Resource CRUD.
- **Visual Title** - This title will be used as your CRUDs title, and the Model name/migration table name will be auto-generated from this title.
- **Icon** - Select an icon for your CRUD. This will be used in the Filament sidebar.
- **Menu Order** allows you to order your CRUDs in the Filament sidebar.

After you fill in the form, click "Create CRUD," and you will be taken to the CRUD editor:

![](./.readme/images/crudEditor.png)

In there, you should notice that there are **four pre-defined fields**. These fields will be created for you automatically.

### Adding Fields to CRUDs

Next, we need to add fields to our CRUD. Click the "New Crud Field" button:

![](./.readme/images/newCrudFieldButton.png)

This will open a new Modal where you can add your field:

![](./.readme/images/newCrudFieldModal.png)

In this form, you have a few options:

- **Type** - The field type you want to add.
- **Validation** - The validation to apply to the field. Currently, only "required" and "optional" (nullable) are supported.
- **Label** - The label for the field. From this label, we will auto-generate the model field name.
- **Placeholder/Hint** - The placeholder for the field. It works for all fields except **checkbox**. For checkboxes, it's a hint.
- **Toggles for Display** - You can toggle the field to be displayed in the list view in create/edit forms.
- **Order** - The order of the field.

Of course, if the field is a relationship, you will have to select the related CRUD:

![](./.readme/images/relatedCrudField.png)

This will create a relationship between the two CRUDs.

### Downloading Generated Code

After you have created your CRUDs and fields, you can download the generated code. Click the "Generate & Download Code" link in the sidebar:

![](./.readme/images/generateDownloadCode.png)

This will open a new page where you can trigger the generation of the code:

![](./.readme/images/generateCodePage.png)

Once you've done this, you can download the generated code (or extract it from the `storage/app` folder).

To trigger the generation again (if you made changes), click the "Start Generation" button again.

---

## How to Use Generated Code

FilaStart will generate the files in three folders:

- app/Models
- database/migrations
- app/Filament/Resources

So, copy-paste the generated files into your existing Laravel + Filament project.

If it's a fresh project, overwrite those folders instead of the old ones.

If a project already contains Models and Migrations, copy only the Filament Resource files.

![](./.readme/images/exampleGraphOfFilesToCopy.png)

[TO-DO: another video emphasizing the copy-paste process]

---

## Extending

FilaStart comes with all Source Code, so you can extend it as you wish. Here are a few resources to get you started:

- [Enabling Modules and Adding Custom Modules](.readme/ModulesReadme.md)
- [Adding Custom Fields](.readme/CustomFields.md)
- [Modifying templates](.readme/ModifyingTemplates.md)

Feel free to dive into the source code and make changes. Everything is type-hinted, so you should be able to navigate the codebase easily.

---

## Want More Filament Examples?

FilaStart is free and open-source, but if you want to see more Filament projects in action, check out our premium product [FilamentExamples.com](https://filamentexamples.com).


================================================
FILE: app/Enums/CrudFieldTypes.php
================================================
<?php

namespace App\Enums;

use Filament\Support\Contracts\HasLabel;

enum CrudFieldTypes: string implements HasLabel
{
    case ID = 'id';
    case TEXT = 'text';
    case DATE_TIME = 'dateTime';
    case BELONGS_TO_MANY = 'belongsToMany';
    case BELONGS_TO = 'belongsTo';
    case PASSWORD = 'password';
    case IMAGE = 'image';
    case TEXTAREA = 'textarea';
    case CHECKBOX = 'checkbox';
    case FLOAT = 'float';
    case EMAIL = 'email';
    case DATE = 'date';
    case MONEY = 'money';
    case FILE = 'file';

    // TODO: Add all supported filament fields here :)

    public function getLabel(): ?string
    {
        return match ($this) {
            self::ID => 'ID',
            self::TEXT => 'Text',
            self::DATE_TIME => 'Date Time',
            self::BELONGS_TO_MANY => 'Belongs To Many',
            self::BELONGS_TO => 'Belongs To',
            self::PASSWORD => 'Password',
            self::IMAGE => 'Image',
            self::TEXTAREA => 'Textarea',
            self::CHECKBOX => 'Checkbox',
            self::FLOAT => 'Float',
            self::EMAIL => 'Email',
            self::DATE => 'Date',
            self::MONEY => 'Money',
            self::FILE => 'File',
        };
    }
}


================================================
FILE: app/Enums/CrudFieldValidation.php
================================================
<?php

namespace App\Enums;

use Filament\Support\Contracts\HasLabel;

enum CrudFieldValidation: string implements HasLabel
{
    case REQUIRED = 'required';
    case NULLABLE = 'optional';

    public function getLabel(): ?string
    {
        return match ($this) {
            self::REQUIRED => 'Required',
            self::NULLABLE => 'Optional',
        };
    }
}


================================================
FILE: app/Enums/CrudTypes.php
================================================
<?php

namespace App\Enums;

use Filament\Support\Contracts\HasLabel;

enum CrudTypes: string implements HasLabel
{
    case CRUD = 'crud';
    case PARENT = 'parent';
    case NON_CRUD = 'non-crud';

    public function getLabel(): ?string
    {
        return match ($this) {
            self::CRUD => 'CRUD',
            self::PARENT => 'Parent',
            self::NON_CRUD => 'Non-CRUD',
        };
    }
}


================================================
FILE: app/Enums/HeroIcons.php
================================================
<?php

namespace App\Enums;

use Filament\Support\Contracts\HasLabel;

enum HeroIcons: string implements HasLabel
{
    case C_ACADEMIC_CAP = 'heroicon-c-academic-cap';
    case C_ADJUSTMENTS_HORIZONTAL = 'heroicon-c-adjustments-horizontal';
    case C_ADJUSTMENTS_VERTICAL = 'heroicon-c-adjustments-vertical';
    case C_ARCHIVE_BOX_ARROW_DOWN = 'heroicon-c-archive-box-arrow-down';
    case C_ARCHIVE_BOX_X_MARK = 'heroicon-c-archive-box-x-mark';
    case C_ARCHIVE_BOX = 'heroicon-c-archive-box';
    case C_ARROW_DOWN_CIRCLE = 'heroicon-c-arrow-down-circle';
    case C_ARROW_DOWN_LEFT = 'heroicon-c-arrow-down-left';
    case C_ARROW_DOWN_ON_SQUARE_STACK = 'heroicon-c-arrow-down-on-square-stack';
    case C_ARROW_DOWN_ON_SQUARE = 'heroicon-c-arrow-down-on-square';
    case C_ARROW_DOWN_RIGHT = 'heroicon-c-arrow-down-right';
    case C_ARROW_DOWN_TRAY = 'heroicon-c-arrow-down-tray';
    case C_ARROW_DOWN = 'heroicon-c-arrow-down';
    case C_ARROW_LEFT_CIRCLE = 'heroicon-c-arrow-left-circle';
    case C_ARROW_LEFT_END_ON_RECTANGLE = 'heroicon-c-arrow-left-end-on-rectangle';
    case C_ARROW_LEFT_START_ON_RECTANGLE = 'heroicon-c-arrow-left-start-on-rectangle';
    case C_ARROW_LEFT = 'heroicon-c-arrow-left';
    case C_ARROW_LONG_DOWN = 'heroicon-c-arrow-long-down';
    case C_ARROW_LONG_LEFT = 'heroicon-c-arrow-long-left';
    case C_ARROW_LONG_RIGHT = 'heroicon-c-arrow-long-right';
    case C_ARROW_LONG_UP = 'heroicon-c-arrow-long-up';
    case C_ARROW_PATH_ROUNDED_SQUARE = 'heroicon-c-arrow-path-rounded-square';
    case C_ARROW_PATH = 'heroicon-c-arrow-path';
    case C_ARROW_RIGHT_CIRCLE = 'heroicon-c-arrow-right-circle';
    case C_ARROW_RIGHT_END_ON_RECTANGLE = 'heroicon-c-arrow-right-end-on-rectangle';
    case C_ARROW_RIGHT_START_ON_RECTANGLE = 'heroicon-c-arrow-right-start-on-rectangle';
    case C_ARROW_RIGHT = 'heroicon-c-arrow-right';
    case C_ARROW_TOP_RIGHT_ON_SQUARE = 'heroicon-c-arrow-top-right-on-square';
    case C_ARROW_TRENDING_DOWN = 'heroicon-c-arrow-trending-down';
    case C_ARROW_TRENDING_UP = 'heroicon-c-arrow-trending-up';
    case C_ARROW_UP_CIRCLE = 'heroicon-c-arrow-up-circle';
    case C_ARROW_UP_LEFT = 'heroicon-c-arrow-up-left';
    case C_ARROW_UP_ON_SQUARE_STACK = 'heroicon-c-arrow-up-on-square-stack';
    case C_ARROW_UP_ON_SQUARE = 'heroicon-c-arrow-up-on-square';
    case C_ARROW_UP_RIGHT = 'heroicon-c-arrow-up-right';
    case C_ARROW_UP_TRAY = 'heroicon-c-arrow-up-tray';
    case C_ARROW_UP = 'heroicon-c-arrow-up';
    case C_ARROW_UTURN_DOWN = 'heroicon-c-arrow-uturn-down';
    case C_ARROW_UTURN_LEFT = 'heroicon-c-arrow-uturn-left';
    case C_ARROW_UTURN_RIGHT = 'heroicon-c-arrow-uturn-right';
    case C_ARROW_UTURN_UP = 'heroicon-c-arrow-uturn-up';
    case C_ARROWS_POINTING_IN = 'heroicon-c-arrows-pointing-in';
    case C_ARROWS_POINTING_OUT = 'heroicon-c-arrows-pointing-out';
    case C_ARROWS_RIGHT_LEFT = 'heroicon-c-arrows-right-left';
    case C_ARROWS_UP_DOWN = 'heroicon-c-arrows-up-down';
    case C_AT_SYMBOL = 'heroicon-c-at-symbol';
    case C_BACKSPACE = 'heroicon-c-backspace';
    case C_BACKWARD = 'heroicon-c-backward';
    case C_BANKNOTES = 'heroicon-c-banknotes';
    case C_BARS_2 = 'heroicon-c-bars-2';
    case C_BARS_3_BOTTOM_LEFT = 'heroicon-c-bars-3-bottom-left';
    case C_BARS_3_BOTTOM_RIGHT = 'heroicon-c-bars-3-bottom-right';
    case C_BARS_3_CENTER_LEFT = 'heroicon-c-bars-3-center-left';
    case C_BARS_3 = 'heroicon-c-bars-3';
    case C_BARS_4 = 'heroicon-c-bars-4';
    case C_BARS_ARROW_DOWN = 'heroicon-c-bars-arrow-down';
    case C_BARS_ARROW_UP = 'heroicon-c-bars-arrow-up';
    case C_BATTERY_0 = 'heroicon-c-battery-0';
    case C_BATTERY_100 = 'heroicon-c-battery-100';
    case C_BATTERY_50 = 'heroicon-c-battery-50';
    case C_BEAKER = 'heroicon-c-beaker';
    case C_BELL_ALERT = 'heroicon-c-bell-alert';
    case C_BELL_SLASH = 'heroicon-c-bell-slash';
    case C_BELL_SNOOZE = 'heroicon-c-bell-snooze';
    case C_BELL = 'heroicon-c-bell';
    case C_BOLT_SLASH = 'heroicon-c-bolt-slash';
    case C_BOLT = 'heroicon-c-bolt';
    case C_BOOK_OPEN = 'heroicon-c-book-open';
    case C_BOOKMARK_SLASH = 'heroicon-c-bookmark-slash';
    case C_BOOKMARK_SQUARE = 'heroicon-c-bookmark-square';
    case C_BOOKMARK = 'heroicon-c-bookmark';
    case C_BRIEFCASE = 'heroicon-c-briefcase';
    case C_BUG_ANT = 'heroicon-c-bug-ant';
    case C_BUILDING_LIBRARY = 'heroicon-c-building-library';
    case C_BUILDING_OFFICE_2 = 'heroicon-c-building-office-2';
    case C_BUILDING_OFFICE = 'heroicon-c-building-office';
    case C_BUILDING_STOREFRONT = 'heroicon-c-building-storefront';
    case C_CAKE = 'heroicon-c-cake';
    case C_CALCULATOR = 'heroicon-c-calculator';
    case C_CALENDAR_DAYS = 'heroicon-c-calendar-days';
    case C_CALENDAR = 'heroicon-c-calendar';
    case C_CAMERA = 'heroicon-c-camera';
    case C_CHART_BAR_SQUARE = 'heroicon-c-chart-bar-square';
    case C_CHART_BAR = 'heroicon-c-chart-bar';
    case C_CHART_PIE = 'heroicon-c-chart-pie';
    case C_CHAT_BUBBLE_BOTTOM_CENTER_TEXT = 'heroicon-c-chat-bubble-bottom-center-text';
    case C_CHAT_BUBBLE_BOTTOM_CENTER = 'heroicon-c-chat-bubble-bottom-center';
    case C_CHAT_BUBBLE_LEFT_ELLIPSIS = 'heroicon-c-chat-bubble-left-ellipsis';
    case C_CHAT_BUBBLE_LEFT_RIGHT = 'heroicon-c-chat-bubble-left-right';
    case C_CHAT_BUBBLE_LEFT = 'heroicon-c-chat-bubble-left';
    case C_CHAT_BUBBLE_OVAL_LEFT_ELLIPSIS = 'heroicon-c-chat-bubble-oval-left-ellipsis';
    case C_CHAT_BUBBLE_OVAL_LEFT = 'heroicon-c-chat-bubble-oval-left';
    case C_CHECK_BADGE = 'heroicon-c-check-badge';
    case C_CHECK_CIRCLE = 'heroicon-c-check-circle';
    case C_CHECK = 'heroicon-c-check';
    case C_CHEVRON_DOUBLE_DOWN = 'heroicon-c-chevron-double-down';
    case C_CHEVRON_DOUBLE_LEFT = 'heroicon-c-chevron-double-left';
    case C_CHEVRON_DOUBLE_RIGHT = 'heroicon-c-chevron-double-right';
    case C_CHEVRON_DOUBLE_UP = 'heroicon-c-chevron-double-up';
    case C_CHEVRON_DOWN = 'heroicon-c-chevron-down';
    case C_CHEVRON_LEFT = 'heroicon-c-chevron-left';
    case C_CHEVRON_RIGHT = 'heroicon-c-chevron-right';
    case C_CHEVRON_UP_DOWN = 'heroicon-c-chevron-up-down';
    case C_CHEVRON_UP = 'heroicon-c-chevron-up';
    case C_CIRCLE_STACK = 'heroicon-c-circle-stack';
    case C_CLIPBOARD_DOCUMENT_CHECK = 'heroicon-c-clipboard-document-check';
    case C_CLIPBOARD_DOCUMENT_LIST = 'heroicon-c-clipboard-document-list';
    case C_CLIPBOARD_DOCUMENT = 'heroicon-c-clipboard-document';
    case C_CLIPBOARD = 'heroicon-c-clipboard';
    case C_CLOCK = 'heroicon-c-clock';
    case C_CLOUD_ARROW_DOWN = 'heroicon-c-cloud-arrow-down';
    case C_CLOUD_ARROW_UP = 'heroicon-c-cloud-arrow-up';
    case C_CLOUD = 'heroicon-c-cloud';
    case C_CODE_BRACKET_SQUARE = 'heroicon-c-code-bracket-square';
    case C_CODE_BRACKET = 'heroicon-c-code-bracket';
    case C_COG_6_TOOTH = 'heroicon-c-cog-6-tooth';
    case C_COG_8_TOOTH = 'heroicon-c-cog-8-tooth';
    case C_COG = 'heroicon-c-cog';
    case C_COMMAND_LINE = 'heroicon-c-command-line';
    case C_COMPUTER_DESKTOP = 'heroicon-c-computer-desktop';
    case C_CPU_CHIP = 'heroicon-c-cpu-chip';
    case C_CREDIT_CARD = 'heroicon-c-credit-card';
    case C_CUBE_TRANSPARENT = 'heroicon-c-cube-transparent';
    case C_CUBE = 'heroicon-c-cube';
    case C_CURRENCY_BANGLADESHI = 'heroicon-c-currency-bangladeshi';
    case C_CURRENCY_DOLLAR = 'heroicon-c-currency-dollar';
    case C_CURRENCY_EURO = 'heroicon-c-currency-euro';
    case C_CURRENCY_POUND = 'heroicon-c-currency-pound';
    case C_CURRENCY_RUPEE = 'heroicon-c-currency-rupee';
    case C_CURRENCY_YEN = 'heroicon-c-currency-yen';
    case C_CURSOR_ARROW_RAYS = 'heroicon-c-cursor-arrow-rays';
    case C_CURSOR_ARROW_RIPPLE = 'heroicon-c-cursor-arrow-ripple';
    case C_DEVICE_PHONE_MOBILE = 'heroicon-c-device-phone-mobile';
    case C_DEVICE_TABLET = 'heroicon-c-device-tablet';
    case C_DOCUMENT_ARROW_DOWN = 'heroicon-c-document-arrow-down';
    case C_DOCUMENT_ARROW_UP = 'heroicon-c-document-arrow-up';
    case C_DOCUMENT_CHART_BAR = 'heroicon-c-document-chart-bar';
    case C_DOCUMENT_CHECK = 'heroicon-c-document-check';
    case C_DOCUMENT_DUPLICATE = 'heroicon-c-document-duplicate';
    case C_DOCUMENT_MAGNIFYING_GLASS = 'heroicon-c-document-magnifying-glass';
    case C_DOCUMENT_MINUS = 'heroicon-c-document-minus';
    case C_DOCUMENT_PLUS = 'heroicon-c-document-plus';
    case C_DOCUMENT_TEXT = 'heroicon-c-document-text';
    case C_DOCUMENT = 'heroicon-c-document';
    case C_ELLIPSIS_HORIZONTAL_CIRCLE = 'heroicon-c-ellipsis-horizontal-circle';
    case C_ELLIPSIS_HORIZONTAL = 'heroicon-c-ellipsis-horizontal';
    case C_ELLIPSIS_VERTICAL = 'heroicon-c-ellipsis-vertical';
    case C_ENVELOPE_OPEN = 'heroicon-c-envelope-open';
    case C_ENVELOPE = 'heroicon-c-envelope';
    case C_EXCLAMATION_CIRCLE = 'heroicon-c-exclamation-circle';
    case C_EXCLAMATION_TRIANGLE = 'heroicon-c-exclamation-triangle';
    case C_EYE_DROPPER = 'heroicon-c-eye-dropper';
    case C_EYE_SLASH = 'heroicon-c-eye-slash';
    case C_EYE = 'heroicon-c-eye';
    case C_FACE_FROWN = 'heroicon-c-face-frown';
    case C_FACE_SMILE = 'heroicon-c-face-smile';
    case C_FILM = 'heroicon-c-film';
    case C_FINGER_PRINT = 'heroicon-c-finger-print';
    case C_FIRE = 'heroicon-c-fire';
    case C_FLAG = 'heroicon-c-flag';
    case C_FOLDER_ARROW_DOWN = 'heroicon-c-folder-arrow-down';
    case C_FOLDER_MINUS = 'heroicon-c-folder-minus';
    case C_FOLDER_OPEN = 'heroicon-c-folder-open';
    case C_FOLDER_PLUS = 'heroicon-c-folder-plus';
    case C_FOLDER = 'heroicon-c-folder';
    case C_FORWARD = 'heroicon-c-forward';
    case C_FUNNEL = 'heroicon-c-funnel';
    case C_GIF = 'heroicon-c-gif';
    case C_GIFT_TOP = 'heroicon-c-gift-top';
    case C_GIFT = 'heroicon-c-gift';
    case C_GLOBE_ALT = 'heroicon-c-globe-alt';
    case C_GLOBE_AMERICAS = 'heroicon-c-globe-americas';
    case C_GLOBE_ASIA_AUSTRALIA = 'heroicon-c-globe-asia-australia';
    case C_GLOBE_EUROPE_AFRICA = 'heroicon-c-globe-europe-africa';
    case C_HAND_RAISED = 'heroicon-c-hand-raised';
    case C_HAND_THUMB_DOWN = 'heroicon-c-hand-thumb-down';
    case C_HAND_THUMB_UP = 'heroicon-c-hand-thumb-up';
    case C_HASHTAG = 'heroicon-c-hashtag';
    case C_HEART = 'heroicon-c-heart';
    case C_HOME_MODERN = 'heroicon-c-home-modern';
    case C_HOME = 'heroicon-c-home';
    case C_IDENTIFICATION = 'heroicon-c-identification';
    case C_INBOX_ARROW_DOWN = 'heroicon-c-inbox-arrow-down';
    case C_INBOX_STACK = 'heroicon-c-inbox-stack';
    case C_INBOX = 'heroicon-c-inbox';
    case C_INFORMATION_CIRCLE = 'heroicon-c-information-circle';
    case C_KEY = 'heroicon-c-key';
    case C_LANGUAGE = 'heroicon-c-language';
    case C_LIFEBUOY = 'heroicon-c-lifebuoy';
    case C_LIGHT_BULB = 'heroicon-c-light-bulb';
    case C_LINK = 'heroicon-c-link';
    case C_LIST_BULLET = 'heroicon-c-list-bullet';
    case C_LOCK_CLOSED = 'heroicon-c-lock-closed';
    case C_LOCK_OPEN = 'heroicon-c-lock-open';
    case C_MAGNIFYING_GLASS_CIRCLE = 'heroicon-c-magnifying-glass-circle';
    case C_MAGNIFYING_GLASS_MINUS = 'heroicon-c-magnifying-glass-minus';
    case C_MAGNIFYING_GLASS_PLUS = 'heroicon-c-magnifying-glass-plus';
    case C_MAGNIFYING_GLASS = 'heroicon-c-magnifying-glass';
    case C_MAP_PIN = 'heroicon-c-map-pin';
    case C_MAP = 'heroicon-c-map';
    case C_MEGAPHONE = 'heroicon-c-megaphone';
    case C_MICROPHONE = 'heroicon-c-microphone';
    case C_MINUS_CIRCLE = 'heroicon-c-minus-circle';
    case C_MINUS = 'heroicon-c-minus';
    case C_MOON = 'heroicon-c-moon';
    case C_MUSICAL_NOTE = 'heroicon-c-musical-note';
    case C_NEWSPAPER = 'heroicon-c-newspaper';
    case C_NO_SYMBOL = 'heroicon-c-no-symbol';
    case C_PAINT_BRUSH = 'heroicon-c-paint-brush';
    case C_PAPER_AIRPLANE = 'heroicon-c-paper-airplane';
    case C_PAPER_CLIP = 'heroicon-c-paper-clip';
    case C_PAUSE_CIRCLE = 'heroicon-c-pause-circle';
    case C_PAUSE = 'heroicon-c-pause';
    case C_PENCIL_SQUARE = 'heroicon-c-pencil-square';
    case C_PENCIL = 'heroicon-c-pencil';
    case C_PHONE_ARROW_DOWN_LEFT = 'heroicon-c-phone-arrow-down-left';
    case C_PHONE_ARROW_UP_RIGHT = 'heroicon-c-phone-arrow-up-right';
    case C_PHONE_X_MARK = 'heroicon-c-phone-x-mark';
    case C_PHONE = 'heroicon-c-phone';
    case C_PHOTO = 'heroicon-c-photo';
    case C_PLAY_CIRCLE = 'heroicon-c-play-circle';
    case C_PLAY_PAUSE = 'heroicon-c-play-pause';
    case C_PLAY = 'heroicon-c-play';
    case C_PLUS_CIRCLE = 'heroicon-c-plus-circle';
    case C_PLUS = 'heroicon-c-plus';
    case C_POWER = 'heroicon-c-power';
    case C_PRESENTATION_CHART_BAR = 'heroicon-c-presentation-chart-bar';
    case C_PRESENTATION_CHART_LINE = 'heroicon-c-presentation-chart-line';
    case C_PRINTER = 'heroicon-c-printer';
    case C_PUZZLE_PIECE = 'heroicon-c-puzzle-piece';
    case C_QR_CODE = 'heroicon-c-qr-code';
    case C_QUESTION_MARK_CIRCLE = 'heroicon-c-question-mark-circle';
    case C_QUEUE_LIST = 'heroicon-c-queue-list';
    case C_RADIO = 'heroicon-c-radio';
    case C_RECEIPT_PERCENT = 'heroicon-c-receipt-percent';
    case C_RECEIPT_REFUND = 'heroicon-c-receipt-refund';
    case C_RECTANGLE_GROUP = 'heroicon-c-rectangle-group';
    case C_RECTANGLE_STACK = 'heroicon-c-rectangle-stack';
    case C_ROCKET_LAUNCH = 'heroicon-c-rocket-launch';
    case C_RSS = 'heroicon-c-rss';
    case C_SCALE = 'heroicon-c-scale';
    case C_SCISSORS = 'heroicon-c-scissors';
    case C_SERVER_STACK = 'heroicon-c-server-stack';
    case C_SERVER = 'heroicon-c-server';
    case C_SHARE = 'heroicon-c-share';
    case C_SHIELD_CHECK = 'heroicon-c-shield-check';
    case C_SHIELD_EXCLAMATION = 'heroicon-c-shield-exclamation';
    case C_SHOPPING_BAG = 'heroicon-c-shopping-bag';
    case C_SHOPPING_CART = 'heroicon-c-shopping-cart';
    case C_SIGNAL_SLASH = 'heroicon-c-signal-slash';
    case C_SIGNAL = 'heroicon-c-signal';
    case C_SPARKLES = 'heroicon-c-sparkles';
    case C_SPEAKER_WAVE = 'heroicon-c-speaker-wave';
    case C_SPEAKER_X_MARK = 'heroicon-c-speaker-x-mark';
    case C_SQUARE_2_STACK = 'heroicon-c-square-2-stack';
    case C_SQUARE_3_STACK_3D = 'heroicon-c-square-3-stack-3d';
    case C_SQUARES_2X2 = 'heroicon-c-squares-2x2';
    case C_SQUARES_PLUS = 'heroicon-c-squares-plus';
    case C_STAR = 'heroicon-c-star';
    case C_STOP_CIRCLE = 'heroicon-c-stop-circle';
    case C_STOP = 'heroicon-c-stop';
    case C_SUN = 'heroicon-c-sun';
    case C_SWATCH = 'heroicon-c-swatch';
    case C_TABLE_CELLS = 'heroicon-c-table-cells';
    case C_TAG = 'heroicon-c-tag';
    case C_TICKET = 'heroicon-c-ticket';
    case C_TRASH = 'heroicon-c-trash';
    case C_TROPHY = 'heroicon-c-trophy';
    case C_TRUCK = 'heroicon-c-truck';
    case C_TV = 'heroicon-c-tv';
    case C_USER_CIRCLE = 'heroicon-c-user-circle';
    case C_USER_GROUP = 'heroicon-c-user-group';
    case C_USER_MINUS = 'heroicon-c-user-minus';
    case C_USER_PLUS = 'heroicon-c-user-plus';
    case C_USER = 'heroicon-c-user';
    case C_USERS = 'heroicon-c-users';
    case C_VARIABLE = 'heroicon-c-variable';
    case C_VIDEO_CAMERA_SLASH = 'heroicon-c-video-camera-slash';
    case C_VIDEO_CAMERA = 'heroicon-c-video-camera';
    case C_VIEW_COLUMNS = 'heroicon-c-view-columns';
    case C_VIEWFINDER_CIRCLE = 'heroicon-c-viewfinder-circle';
    case C_WALLET = 'heroicon-c-wallet';
    case C_WIFI = 'heroicon-c-wifi';
    case C_WINDOW = 'heroicon-c-window';
    case C_WRENCH_SCREWDRIVER = 'heroicon-c-wrench-screwdriver';
    case C_WRENCH = 'heroicon-c-wrench';
    case C_X_CIRCLE = 'heroicon-c-x-circle';
    case C_X_MARK = 'heroicon-c-x-mark';
    case M_ACADEMIC_CAP = 'heroicon-m-academic-cap';
    case M_ADJUSTMENTS_HORIZONTAL = 'heroicon-m-adjustments-horizontal';
    case M_ADJUSTMENTS_VERTICAL = 'heroicon-m-adjustments-vertical';
    case M_ARCHIVE_BOX_ARROW_DOWN = 'heroicon-m-archive-box-arrow-down';
    case M_ARCHIVE_BOX_X_MARK = 'heroicon-m-archive-box-x-mark';
    case M_ARCHIVE_BOX = 'heroicon-m-archive-box';
    case M_ARROW_DOWN_CIRCLE = 'heroicon-m-arrow-down-circle';
    case M_ARROW_DOWN_LEFT = 'heroicon-m-arrow-down-left';
    case M_ARROW_DOWN_ON_SQUARE_STACK = 'heroicon-m-arrow-down-on-square-stack';
    case M_ARROW_DOWN_ON_SQUARE = 'heroicon-m-arrow-down-on-square';
    case M_ARROW_DOWN_RIGHT = 'heroicon-m-arrow-down-right';
    case M_ARROW_DOWN_TRAY = 'heroicon-m-arrow-down-tray';
    case M_ARROW_DOWN = 'heroicon-m-arrow-down';
    case M_ARROW_LEFT_CIRCLE = 'heroicon-m-arrow-left-circle';
    case M_ARROW_LEFT_END_ON_RECTANGLE = 'heroicon-m-arrow-left-end-on-rectangle';
    case M_ARROW_LEFT_ON_RECTANGLE = 'heroicon-m-arrow-left-on-rectangle';
    case M_ARROW_LEFT_START_ON_RECTANGLE = 'heroicon-m-arrow-left-start-on-rectangle';
    case M_ARROW_LEFT = 'heroicon-m-arrow-left';
    case M_ARROW_LONG_DOWN = 'heroicon-m-arrow-long-down';
    case M_ARROW_LONG_LEFT = 'heroicon-m-arrow-long-left';
    case M_ARROW_LONG_RIGHT = 'heroicon-m-arrow-long-right';
    case M_ARROW_LONG_UP = 'heroicon-m-arrow-long-up';
    case M_ARROW_PATH_ROUNDED_SQUARE = 'heroicon-m-arrow-path-rounded-square';
    case M_ARROW_PATH = 'heroicon-m-arrow-path';
    case M_ARROW_RIGHT_CIRCLE = 'heroicon-m-arrow-right-circle';
    case M_ARROW_RIGHT_END_ON_RECTANGLE = 'heroicon-m-arrow-right-end-on-rectangle';
    case M_ARROW_RIGHT_ON_RECTANGLE = 'heroicon-m-arrow-right-on-rectangle';
    case M_ARROW_RIGHT_START_ON_RECTANGLE = 'heroicon-m-arrow-right-start-on-rectangle';
    case M_ARROW_RIGHT = 'heroicon-m-arrow-right';
    case M_ARROW_SMALL_DOWN = 'heroicon-m-arrow-small-down';
    case M_ARROW_SMALL_LEFT = 'heroicon-m-arrow-small-left';
    case M_ARROW_SMALL_RIGHT = 'heroicon-m-arrow-small-right';
    case M_ARROW_SMALL_UP = 'heroicon-m-arrow-small-up';
    case M_ARROW_TOP_RIGHT_ON_SQUARE = 'heroicon-m-arrow-top-right-on-square';
    case M_ARROW_TRENDING_DOWN = 'heroicon-m-arrow-trending-down';
    case M_ARROW_TRENDING_UP = 'heroicon-m-arrow-trending-up';
    case M_ARROW_UP_CIRCLE = 'heroicon-m-arrow-up-circle';
    case M_ARROW_UP_LEFT = 'heroicon-m-arrow-up-left';
    case M_ARROW_UP_ON_SQUARE_STACK = 'heroicon-m-arrow-up-on-square-stack';
    case M_ARROW_UP_ON_SQUARE = 'heroicon-m-arrow-up-on-square';
    case M_ARROW_UP_RIGHT = 'heroicon-m-arrow-up-right';
    case M_ARROW_UP_TRAY = 'heroicon-m-arrow-up-tray';
    case M_ARROW_UP = 'heroicon-m-arrow-up';
    case M_ARROW_UTURN_DOWN = 'heroicon-m-arrow-uturn-down';
    case M_ARROW_UTURN_LEFT = 'heroicon-m-arrow-uturn-left';
    case M_ARROW_UTURN_RIGHT = 'heroicon-m-arrow-uturn-right';
    case M_ARROW_UTURN_UP = 'heroicon-m-arrow-uturn-up';
    case M_ARROWS_POINTING_IN = 'heroicon-m-arrows-pointing-in';
    case M_ARROWS_POINTING_OUT = 'heroicon-m-arrows-pointing-out';
    case M_ARROWS_RIGHT_LEFT = 'heroicon-m-arrows-right-left';
    case M_ARROWS_UP_DOWN = 'heroicon-m-arrows-up-down';
    case M_AT_SYMBOL = 'heroicon-m-at-symbol';
    case M_BACKSPACE = 'heroicon-m-backspace';
    case M_BACKWARD = 'heroicon-m-backward';
    case M_BANKNOTES = 'heroicon-m-banknotes';
    case M_BARS_2 = 'heroicon-m-bars-2';
    case M_BARS_3_BOTTOM_LEFT = 'heroicon-m-bars-3-bottom-left';
    case M_BARS_3_BOTTOM_RIGHT = 'heroicon-m-bars-3-bottom-right';
    case M_BARS_3_CENTER_LEFT = 'heroicon-m-bars-3-center-left';
    case M_BARS_3 = 'heroicon-m-bars-3';
    case M_BARS_4 = 'heroicon-m-bars-4';
    case M_BARS_ARROW_DOWN = 'heroicon-m-bars-arrow-down';
    case M_BARS_ARROW_UP = 'heroicon-m-bars-arrow-up';
    case M_BATTERY_0 = 'heroicon-m-battery-0';
    case M_BATTERY_100 = 'heroicon-m-battery-100';
    case M_BATTERY_50 = 'heroicon-m-battery-50';
    case M_BEAKER = 'heroicon-m-beaker';
    case M_BELL_ALERT = 'heroicon-m-bell-alert';
    case M_BELL_SLASH = 'heroicon-m-bell-slash';
    case M_BELL_SNOOZE = 'heroicon-m-bell-snooze';
    case M_BELL = 'heroicon-m-bell';
    case M_BOLT_SLASH = 'heroicon-m-bolt-slash';
    case M_BOLT = 'heroicon-m-bolt';
    case M_BOOK_OPEN = 'heroicon-m-book-open';
    case M_BOOKMARK_SLASH = 'heroicon-m-bookmark-slash';
    case M_BOOKMARK_SQUARE = 'heroicon-m-bookmark-square';
    case M_BOOKMARK = 'heroicon-m-bookmark';
    case M_BRIEFCASE = 'heroicon-m-briefcase';
    case M_BUG_ANT = 'heroicon-m-bug-ant';
    case M_BUILDING_LIBRARY = 'heroicon-m-building-library';
    case M_BUILDING_OFFICE_2 = 'heroicon-m-building-office-2';
    case M_BUILDING_OFFICE = 'heroicon-m-building-office';
    case M_BUILDING_STOREFRONT = 'heroicon-m-building-storefront';
    case M_CAKE = 'heroicon-m-cake';
    case M_CALCULATOR = 'heroicon-m-calculator';
    case M_CALENDAR_DAYS = 'heroicon-m-calendar-days';
    case M_CALENDAR = 'heroicon-m-calendar';
    case M_CAMERA = 'heroicon-m-camera';
    case M_CHART_BAR_SQUARE = 'heroicon-m-chart-bar-square';
    case M_CHART_BAR = 'heroicon-m-chart-bar';
    case M_CHART_PIE = 'heroicon-m-chart-pie';
    case M_CHAT_BUBBLE_BOTTOM_CENTER_TEXT = 'heroicon-m-chat-bubble-bottom-center-text';
    case M_CHAT_BUBBLE_BOTTOM_CENTER = 'heroicon-m-chat-bubble-bottom-center';
    case M_CHAT_BUBBLE_LEFT_ELLIPSIS = 'heroicon-m-chat-bubble-left-ellipsis';
    case M_CHAT_BUBBLE_LEFT_RIGHT = 'heroicon-m-chat-bubble-left-right';
    case M_CHAT_BUBBLE_LEFT = 'heroicon-m-chat-bubble-left';
    case M_CHAT_BUBBLE_OVAL_LEFT_ELLIPSIS = 'heroicon-m-chat-bubble-oval-left-ellipsis';
    case M_CHAT_BUBBLE_OVAL_LEFT = 'heroicon-m-chat-bubble-oval-left';
    case M_CHECK_BADGE = 'heroicon-m-check-badge';
    case M_CHECK_CIRCLE = 'heroicon-m-check-circle';
    case M_CHECK = 'heroicon-m-check';
    case M_CHEVRON_DOUBLE_DOWN = 'heroicon-m-chevron-double-down';
    case M_CHEVRON_DOUBLE_LEFT = 'heroicon-m-chevron-double-left';
    case M_CHEVRON_DOUBLE_RIGHT = 'heroicon-m-chevron-double-right';
    case M_CHEVRON_DOUBLE_UP = 'heroicon-m-chevron-double-up';
    case M_CHEVRON_DOWN = 'heroicon-m-chevron-down';
    case M_CHEVRON_LEFT = 'heroicon-m-chevron-left';
    case M_CHEVRON_RIGHT = 'heroicon-m-chevron-right';
    case M_CHEVRON_UP_DOWN = 'heroicon-m-chevron-up-down';
    case M_CHEVRON_UP = 'heroicon-m-chevron-up';
    case M_CIRCLE_STACK = 'heroicon-m-circle-stack';
    case M_CLIPBOARD_DOCUMENT_CHECK = 'heroicon-m-clipboard-document-check';
    case M_CLIPBOARD_DOCUMENT_LIST = 'heroicon-m-clipboard-document-list';
    case M_CLIPBOARD_DOCUMENT = 'heroicon-m-clipboard-document';
    case M_CLIPBOARD = 'heroicon-m-clipboard';
    case M_CLOCK = 'heroicon-m-clock';
    case M_CLOUD_ARROW_DOWN = 'heroicon-m-cloud-arrow-down';
    case M_CLOUD_ARROW_UP = 'heroicon-m-cloud-arrow-up';
    case M_CLOUD = 'heroicon-m-cloud';
    case M_CODE_BRACKET_SQUARE = 'heroicon-m-code-bracket-square';
    case M_CODE_BRACKET = 'heroicon-m-code-bracket';
    case M_COG_6_TOOTH = 'heroicon-m-cog-6-tooth';
    case M_COG_8_TOOTH = 'heroicon-m-cog-8-tooth';
    case M_COG = 'heroicon-m-cog';
    case M_COMMAND_LINE = 'heroicon-m-command-line';
    case M_COMPUTER_DESKTOP = 'heroicon-m-computer-desktop';
    case M_CPU_CHIP = 'heroicon-m-cpu-chip';
    case M_CREDIT_CARD = 'heroicon-m-credit-card';
    case M_CUBE_TRANSPARENT = 'heroicon-m-cube-transparent';
    case M_CUBE = 'heroicon-m-cube';
    case M_CURRENCY_BANGLADESHI = 'heroicon-m-currency-bangladeshi';
    case M_CURRENCY_DOLLAR = 'heroicon-m-currency-dollar';
    case M_CURRENCY_EURO = 'heroicon-m-currency-euro';
    case M_CURRENCY_POUND = 'heroicon-m-currency-pound';
    case M_CURRENCY_RUPEE = 'heroicon-m-currency-rupee';
    case M_CURRENCY_YEN = 'heroicon-m-currency-yen';
    case M_CURSOR_ARROW_RAYS = 'heroicon-m-cursor-arrow-rays';
    case M_CURSOR_ARROW_RIPPLE = 'heroicon-m-cursor-arrow-ripple';
    case M_DEVICE_PHONE_MOBILE = 'heroicon-m-device-phone-mobile';
    case M_DEVICE_TABLET = 'heroicon-m-device-tablet';
    case M_DOCUMENT_ARROW_DOWN = 'heroicon-m-document-arrow-down';
    case M_DOCUMENT_ARROW_UP = 'heroicon-m-document-arrow-up';
    case M_DOCUMENT_CHART_BAR = 'heroicon-m-document-chart-bar';
    case M_DOCUMENT_CHECK = 'heroicon-m-document-check';
    case M_DOCUMENT_DUPLICATE = 'heroicon-m-document-duplicate';
    case M_DOCUMENT_MAGNIFYING_GLASS = 'heroicon-m-document-magnifying-glass';
    case M_DOCUMENT_MINUS = 'heroicon-m-document-minus';
    case M_DOCUMENT_PLUS = 'heroicon-m-document-plus';
    case M_DOCUMENT_TEXT = 'heroicon-m-document-text';
    case M_DOCUMENT = 'heroicon-m-document';
    case M_ELLIPSIS_HORIZONTAL_CIRCLE = 'heroicon-m-ellipsis-horizontal-circle';
    case M_ELLIPSIS_HORIZONTAL = 'heroicon-m-ellipsis-horizontal';
    case M_ELLIPSIS_VERTICAL = 'heroicon-m-ellipsis-vertical';
    case M_ENVELOPE_OPEN = 'heroicon-m-envelope-open';
    case M_ENVELOPE = 'heroicon-m-envelope';
    case M_EXCLAMATION_CIRCLE = 'heroicon-m-exclamation-circle';
    case M_EXCLAMATION_TRIANGLE = 'heroicon-m-exclamation-triangle';
    case M_EYE_DROPPER = 'heroicon-m-eye-dropper';
    case M_EYE_SLASH = 'heroicon-m-eye-slash';
    case M_EYE = 'heroicon-m-eye';
    case M_FACE_FROWN = 'heroicon-m-face-frown';
    case M_FACE_SMILE = 'heroicon-m-face-smile';
    case M_FILM = 'heroicon-m-film';
    case M_FINGER_PRINT = 'heroicon-m-finger-print';
    case M_FIRE = 'heroicon-m-fire';
    case M_FLAG = 'heroicon-m-flag';
    case M_FOLDER_ARROW_DOWN = 'heroicon-m-folder-arrow-down';
    case M_FOLDER_MINUS = 'heroicon-m-folder-minus';
    case M_FOLDER_OPEN = 'heroicon-m-folder-open';
    case M_FOLDER_PLUS = 'heroicon-m-folder-plus';
    case M_FOLDER = 'heroicon-m-folder';
    case M_FORWARD = 'heroicon-m-forward';
    case M_FUNNEL = 'heroicon-m-funnel';
    case M_GIF = 'heroicon-m-gif';
    case M_GIFT_TOP = 'heroicon-m-gift-top';
    case M_GIFT = 'heroicon-m-gift';
    case M_GLOBE_ALT = 'heroicon-m-globe-alt';
    case M_GLOBE_AMERICAS = 'heroicon-m-globe-americas';
    case M_GLOBE_ASIA_AUSTRALIA = 'heroicon-m-globe-asia-australia';
    case M_GLOBE_EUROPE_AFRICA = 'heroicon-m-globe-europe-africa';
    case M_HAND_RAISED = 'heroicon-m-hand-raised';
    case M_HAND_THUMB_DOWN = 'heroicon-m-hand-thumb-down';
    case M_HAND_THUMB_UP = 'heroicon-m-hand-thumb-up';
    case M_HASHTAG = 'heroicon-m-hashtag';
    case M_HEART = 'heroicon-m-heart';
    case M_HOME_MODERN = 'heroicon-m-home-modern';
    case M_HOME = 'heroicon-m-home';
    case M_IDENTIFICATION = 'heroicon-m-identification';
    case M_INBOX_ARROW_DOWN = 'heroicon-m-inbox-arrow-down';
    case M_INBOX_STACK = 'heroicon-m-inbox-stack';
    case M_INBOX = 'heroicon-m-inbox';
    case M_INFORMATION_CIRCLE = 'heroicon-m-information-circle';
    case M_KEY = 'heroicon-m-key';
    case M_LANGUAGE = 'heroicon-m-language';
    case M_LIFEBUOY = 'heroicon-m-lifebuoy';
    case M_LIGHT_BULB = 'heroicon-m-light-bulb';
    case M_LINK = 'heroicon-m-link';
    case M_LIST_BULLET = 'heroicon-m-list-bullet';
    case M_LOCK_CLOSED = 'heroicon-m-lock-closed';
    case M_LOCK_OPEN = 'heroicon-m-lock-open';
    case M_MAGNIFYING_GLASS_CIRCLE = 'heroicon-m-magnifying-glass-circle';
    case M_MAGNIFYING_GLASS_MINUS = 'heroicon-m-magnifying-glass-minus';
    case M_MAGNIFYING_GLASS_PLUS = 'heroicon-m-magnifying-glass-plus';
    case M_MAGNIFYING_GLASS = 'heroicon-m-magnifying-glass';
    case M_MAP_PIN = 'heroicon-m-map-pin';
    case M_MAP = 'heroicon-m-map';
    case M_MEGAPHONE = 'heroicon-m-megaphone';
    case M_MICROPHONE = 'heroicon-m-microphone';
    case M_MINUS_CIRCLE = 'heroicon-m-minus-circle';
    case M_MINUS_SMALL = 'heroicon-m-minus-small';
    case M_MINUS = 'heroicon-m-minus';
    case M_MOON = 'heroicon-m-moon';
    case M_MUSICAL_NOTE = 'heroicon-m-musical-note';
    case M_NEWSPAPER = 'heroicon-m-newspaper';
    case M_NO_SYMBOL = 'heroicon-m-no-symbol';
    case M_PAINT_BRUSH = 'heroicon-m-paint-brush';
    case M_PAPER_AIRPLANE = 'heroicon-m-paper-airplane';
    case M_PAPER_CLIP = 'heroicon-m-paper-clip';
    case M_PAUSE_CIRCLE = 'heroicon-m-pause-circle';
    case M_PAUSE = 'heroicon-m-pause';
    case M_PENCIL_SQUARE = 'heroicon-m-pencil-square';
    case M_PENCIL = 'heroicon-m-pencil';
    case M_PHONE_ARROW_DOWN_LEFT = 'heroicon-m-phone-arrow-down-left';
    case M_PHONE_ARROW_UP_RIGHT = 'heroicon-m-phone-arrow-up-right';
    case M_PHONE_X_MARK = 'heroicon-m-phone-x-mark';
    case M_PHONE = 'heroicon-m-phone';
    case M_PHOTO = 'heroicon-m-photo';
    case M_PLAY_CIRCLE = 'heroicon-m-play-circle';
    case M_PLAY_PAUSE = 'heroicon-m-play-pause';
    case M_PLAY = 'heroicon-m-play';
    case M_PLUS_CIRCLE = 'heroicon-m-plus-circle';
    case M_PLUS_SMALL = 'heroicon-m-plus-small';
    case M_PLUS = 'heroicon-m-plus';
    case M_POWER = 'heroicon-m-power';
    case M_PRESENTATION_CHART_BAR = 'heroicon-m-presentation-chart-bar';
    case M_PRESENTATION_CHART_LINE = 'heroicon-m-presentation-chart-line';
    case M_PRINTER = 'heroicon-m-printer';
    case M_PUZZLE_PIECE = 'heroicon-m-puzzle-piece';
    case M_QR_CODE = 'heroicon-m-qr-code';
    case M_QUESTION_MARK_CIRCLE = 'heroicon-m-question-mark-circle';
    case M_QUEUE_LIST = 'heroicon-m-queue-list';
    case M_RADIO = 'heroicon-m-radio';
    case M_RECEIPT_PERCENT = 'heroicon-m-receipt-percent';
    case M_RECEIPT_REFUND = 'heroicon-m-receipt-refund';
    case M_RECTANGLE_GROUP = 'heroicon-m-rectangle-group';
    case M_RECTANGLE_STACK = 'heroicon-m-rectangle-stack';
    case M_ROCKET_LAUNCH = 'heroicon-m-rocket-launch';
    case M_RSS = 'heroicon-m-rss';
    case M_SCALE = 'heroicon-m-scale';
    case M_SCISSORS = 'heroicon-m-scissors';
    case M_SERVER_STACK = 'heroicon-m-server-stack';
    case M_SERVER = 'heroicon-m-server';
    case M_SHARE = 'heroicon-m-share';
    case M_SHIELD_CHECK = 'heroicon-m-shield-check';
    case M_SHIELD_EXCLAMATION = 'heroicon-m-shield-exclamation';
    case M_SHOPPING_BAG = 'heroicon-m-shopping-bag';
    case M_SHOPPING_CART = 'heroicon-m-shopping-cart';
    case M_SIGNAL_SLASH = 'heroicon-m-signal-slash';
    case M_SIGNAL = 'heroicon-m-signal';
    case M_SPARKLES = 'heroicon-m-sparkles';
    case M_SPEAKER_WAVE = 'heroicon-m-speaker-wave';
    case M_SPEAKER_X_MARK = 'heroicon-m-speaker-x-mark';
    case M_SQUARE_2_STACK = 'heroicon-m-square-2-stack';
    case M_SQUARE_3_STACK_3D = 'heroicon-m-square-3-stack-3d';
    case M_SQUARES_2X2 = 'heroicon-m-squares-2x2';
    case M_SQUARES_PLUS = 'heroicon-m-squares-plus';
    case M_STAR = 'heroicon-m-star';
    case M_STOP_CIRCLE = 'heroicon-m-stop-circle';
    case M_STOP = 'heroicon-m-stop';
    case M_SUN = 'heroicon-m-sun';
    case M_SWATCH = 'heroicon-m-swatch';
    case M_TABLE_CELLS = 'heroicon-m-table-cells';
    case M_TAG = 'heroicon-m-tag';
    case M_TICKET = 'heroicon-m-ticket';
    case M_TRASH = 'heroicon-m-trash';
    case M_TROPHY = 'heroicon-m-trophy';
    case M_TRUCK = 'heroicon-m-truck';
    case M_TV = 'heroicon-m-tv';
    case M_USER_CIRCLE = 'heroicon-m-user-circle';
    case M_USER_GROUP = 'heroicon-m-user-group';
    case M_USER_MINUS = 'heroicon-m-user-minus';
    case M_USER_PLUS = 'heroicon-m-user-plus';
    case M_USER = 'heroicon-m-user';
    case M_USERS = 'heroicon-m-users';
    case M_VARIABLE = 'heroicon-m-variable';
    case M_VIDEO_CAMERA_SLASH = 'heroicon-m-video-camera-slash';
    case M_VIDEO_CAMERA = 'heroicon-m-video-camera';
    case M_VIEW_COLUMNS = 'heroicon-m-view-columns';
    case M_VIEWFINDER_CIRCLE = 'heroicon-m-viewfinder-circle';
    case M_WALLET = 'heroicon-m-wallet';
    case M_WIFI = 'heroicon-m-wifi';
    case M_WINDOW = 'heroicon-m-window';
    case M_WRENCH_SCREWDRIVER = 'heroicon-m-wrench-screwdriver';
    case M_WRENCH = 'heroicon-m-wrench';
    case M_X_CIRCLE = 'heroicon-m-x-circle';
    case M_X_MARK = 'heroicon-m-x-mark';
    case O_ACADEMIC_CAP = 'heroicon-o-academic-cap';
    case O_ADJUSTMENTS_HORIZONTAL = 'heroicon-o-adjustments-horizontal';
    case O_ADJUSTMENTS_VERTICAL = 'heroicon-o-adjustments-vertical';
    case O_ARCHIVE_BOX_ARROW_DOWN = 'heroicon-o-archive-box-arrow-down';
    case O_ARCHIVE_BOX_X_MARK = 'heroicon-o-archive-box-x-mark';
    case O_ARCHIVE_BOX = 'heroicon-o-archive-box';
    case O_ARROW_DOWN_CIRCLE = 'heroicon-o-arrow-down-circle';
    case O_ARROW_DOWN_LEFT = 'heroicon-o-arrow-down-left';
    case O_ARROW_DOWN_ON_SQUARE_STACK = 'heroicon-o-arrow-down-on-square-stack';
    case O_ARROW_DOWN_ON_SQUARE = 'heroicon-o-arrow-down-on-square';
    case O_ARROW_DOWN_RIGHT = 'heroicon-o-arrow-down-right';
    case O_ARROW_DOWN_TRAY = 'heroicon-o-arrow-down-tray';
    case O_ARROW_DOWN = 'heroicon-o-arrow-down';
    case O_ARROW_LEFT_CIRCLE = 'heroicon-o-arrow-left-circle';
    case O_ARROW_LEFT_END_ON_RECTANGLE = 'heroicon-o-arrow-left-end-on-rectangle';
    case O_ARROW_LEFT_ON_RECTANGLE = 'heroicon-o-arrow-left-on-rectangle';
    case O_ARROW_LEFT_START_ON_RECTANGLE = 'heroicon-o-arrow-left-start-on-rectangle';
    case O_ARROW_LEFT = 'heroicon-o-arrow-left';
    case O_ARROW_LONG_DOWN = 'heroicon-o-arrow-long-down';
    case O_ARROW_LONG_LEFT = 'heroicon-o-arrow-long-left';
    case O_ARROW_LONG_RIGHT = 'heroicon-o-arrow-long-right';
    case O_ARROW_LONG_UP = 'heroicon-o-arrow-long-up';
    case O_ARROW_PATH_ROUNDED_SQUARE = 'heroicon-o-arrow-path-rounded-square';
    case O_ARROW_PATH = 'heroicon-o-arrow-path';
    case O_ARROW_RIGHT_CIRCLE = 'heroicon-o-arrow-right-circle';
    case O_ARROW_RIGHT_END_ON_RECTANGLE = 'heroicon-o-arrow-right-end-on-rectangle';
    case O_ARROW_RIGHT_ON_RECTANGLE = 'heroicon-o-arrow-right-on-rectangle';
    case O_ARROW_RIGHT_START_ON_RECTANGLE = 'heroicon-o-arrow-right-start-on-rectangle';
    case O_ARROW_RIGHT = 'heroicon-o-arrow-right';
    case O_ARROW_SMALL_DOWN = 'heroicon-o-arrow-small-down';
    case O_ARROW_SMALL_LEFT = 'heroicon-o-arrow-small-left';
    case O_ARROW_SMALL_RIGHT = 'heroicon-o-arrow-small-right';
    case O_ARROW_SMALL_UP = 'heroicon-o-arrow-small-up';
    case O_ARROW_TOP_RIGHT_ON_SQUARE = 'heroicon-o-arrow-top-right-on-square';
    case O_ARROW_TRENDING_DOWN = 'heroicon-o-arrow-trending-down';
    case O_ARROW_TRENDING_UP = 'heroicon-o-arrow-trending-up';
    case O_ARROW_UP_CIRCLE = 'heroicon-o-arrow-up-circle';
    case O_ARROW_UP_LEFT = 'heroicon-o-arrow-up-left';
    case O_ARROW_UP_ON_SQUARE_STACK = 'heroicon-o-arrow-up-on-square-stack';
    case O_ARROW_UP_ON_SQUARE = 'heroicon-o-arrow-up-on-square';
    case O_ARROW_UP_RIGHT = 'heroicon-o-arrow-up-right';
    case O_ARROW_UP_TRAY = 'heroicon-o-arrow-up-tray';
    case O_ARROW_UP = 'heroicon-o-arrow-up';
    case O_ARROW_UTURN_DOWN = 'heroicon-o-arrow-uturn-down';
    case O_ARROW_UTURN_LEFT = 'heroicon-o-arrow-uturn-left';
    case O_ARROW_UTURN_RIGHT = 'heroicon-o-arrow-uturn-right';
    case O_ARROW_UTURN_UP = 'heroicon-o-arrow-uturn-up';
    case O_ARROWS_POINTING_IN = 'heroicon-o-arrows-pointing-in';
    case O_ARROWS_POINTING_OUT = 'heroicon-o-arrows-pointing-out';
    case O_ARROWS_RIGHT_LEFT = 'heroicon-o-arrows-right-left';
    case O_ARROWS_UP_DOWN = 'heroicon-o-arrows-up-down';
    case O_AT_SYMBOL = 'heroicon-o-at-symbol';
    case O_BACKSPACE = 'heroicon-o-backspace';
    case O_BACKWARD = 'heroicon-o-backward';
    case O_BANKNOTES = 'heroicon-o-banknotes';
    case O_BARS_2 = 'heroicon-o-bars-2';
    case O_BARS_3_BOTTOM_LEFT = 'heroicon-o-bars-3-bottom-left';
    case O_BARS_3_BOTTOM_RIGHT = 'heroicon-o-bars-3-bottom-right';
    case O_BARS_3_CENTER_LEFT = 'heroicon-o-bars-3-center-left';
    case O_BARS_3 = 'heroicon-o-bars-3';
    case O_BARS_4 = 'heroicon-o-bars-4';
    case O_BARS_ARROW_DOWN = 'heroicon-o-bars-arrow-down';
    case O_BARS_ARROW_UP = 'heroicon-o-bars-arrow-up';
    case O_BATTERY_0 = 'heroicon-o-battery-0';
    case O_BATTERY_100 = 'heroicon-o-battery-100';
    case O_BATTERY_50 = 'heroicon-o-battery-50';
    case O_BEAKER = 'heroicon-o-beaker';
    case O_BELL_ALERT = 'heroicon-o-bell-alert';
    case O_BELL_SLASH = 'heroicon-o-bell-slash';
    case O_BELL_SNOOZE = 'heroicon-o-bell-snooze';
    case O_BELL = 'heroicon-o-bell';
    case O_BOLT_SLASH = 'heroicon-o-bolt-slash';
    case O_BOLT = 'heroicon-o-bolt';
    case O_BOOK_OPEN = 'heroicon-o-book-open';
    case O_BOOKMARK_SLASH = 'heroicon-o-bookmark-slash';
    case O_BOOKMARK_SQUARE = 'heroicon-o-bookmark-square';
    case O_BOOKMARK = 'heroicon-o-bookmark';
    case O_BRIEFCASE = 'heroicon-o-briefcase';
    case O_BUG_ANT = 'heroicon-o-bug-ant';
    case O_BUILDING_LIBRARY = 'heroicon-o-building-library';
    case O_BUILDING_OFFICE_2 = 'heroicon-o-building-office-2';
    case O_BUILDING_OFFICE = 'heroicon-o-building-office';
    case O_BUILDING_STOREFRONT = 'heroicon-o-building-storefront';
    case O_CAKE = 'heroicon-o-cake';
    case O_CALCULATOR = 'heroicon-o-calculator';
    case O_CALENDAR_DAYS = 'heroicon-o-calendar-days';
    case O_CALENDAR = 'heroicon-o-calendar';
    case O_CAMERA = 'heroicon-o-camera';
    case O_CHART_BAR_SQUARE = 'heroicon-o-chart-bar-square';
    case O_CHART_BAR = 'heroicon-o-chart-bar';
    case O_CHART_PIE = 'heroicon-o-chart-pie';
    case O_CHAT_BUBBLE_BOTTOM_CENTER_TEXT = 'heroicon-o-chat-bubble-bottom-center-text';
    case O_CHAT_BUBBLE_BOTTOM_CENTER = 'heroicon-o-chat-bubble-bottom-center';
    case O_CHAT_BUBBLE_LEFT_ELLIPSIS = 'heroicon-o-chat-bubble-left-ellipsis';
    case O_CHAT_BUBBLE_LEFT_RIGHT = 'heroicon-o-chat-bubble-left-right';
    case O_CHAT_BUBBLE_LEFT = 'heroicon-o-chat-bubble-left';
    case O_CHAT_BUBBLE_OVAL_LEFT_ELLIPSIS = 'heroicon-o-chat-bubble-oval-left-ellipsis';
    case O_CHAT_BUBBLE_OVAL_LEFT = 'heroicon-o-chat-bubble-oval-left';
    case O_CHECK_BADGE = 'heroicon-o-check-badge';
    case O_CHECK_CIRCLE = 'heroicon-o-check-circle';
    case O_CHECK = 'heroicon-o-check';
    case O_CHEVRON_DOUBLE_DOWN = 'heroicon-o-chevron-double-down';
    case O_CHEVRON_DOUBLE_LEFT = 'heroicon-o-chevron-double-left';
    case O_CHEVRON_DOUBLE_RIGHT = 'heroicon-o-chevron-double-right';
    case O_CHEVRON_DOUBLE_UP = 'heroicon-o-chevron-double-up';
    case O_CHEVRON_DOWN = 'heroicon-o-chevron-down';
    case O_CHEVRON_LEFT = 'heroicon-o-chevron-left';
    case O_CHEVRON_RIGHT = 'heroicon-o-chevron-right';
    case O_CHEVRON_UP_DOWN = 'heroicon-o-chevron-up-down';
    case O_CHEVRON_UP = 'heroicon-o-chevron-up';
    case O_CIRCLE_STACK = 'heroicon-o-circle-stack';
    case O_CLIPBOARD_DOCUMENT_CHECK = 'heroicon-o-clipboard-document-check';
    case O_CLIPBOARD_DOCUMENT_LIST = 'heroicon-o-clipboard-document-list';
    case O_CLIPBOARD_DOCUMENT = 'heroicon-o-clipboard-document';
    case O_CLIPBOARD = 'heroicon-o-clipboard';
    case O_CLOCK = 'heroicon-o-clock';
    case O_CLOUD_ARROW_DOWN = 'heroicon-o-cloud-arrow-down';
    case O_CLOUD_ARROW_UP = 'heroicon-o-cloud-arrow-up';
    case O_CLOUD = 'heroicon-o-cloud';
    case O_CODE_BRACKET_SQUARE = 'heroicon-o-code-bracket-square';
    case O_CODE_BRACKET = 'heroicon-o-code-bracket';
    case O_COG_6_TOOTH = 'heroicon-o-cog-6-tooth';
    case O_COG_8_TOOTH = 'heroicon-o-cog-8-tooth';
    case O_COG = 'heroicon-o-cog';
    case O_COMMAND_LINE = 'heroicon-o-command-line';
    case O_COMPUTER_DESKTOP = 'heroicon-o-computer-desktop';
    case O_CPU_CHIP = 'heroicon-o-cpu-chip';
    case O_CREDIT_CARD = 'heroicon-o-credit-card';
    case O_CUBE_TRANSPARENT = 'heroicon-o-cube-transparent';
    case O_CUBE = 'heroicon-o-cube';
    case O_CURRENCY_BANGLADESHI = 'heroicon-o-currency-bangladeshi';
    case O_CURRENCY_DOLLAR = 'heroicon-o-currency-dollar';
    case O_CURRENCY_EURO = 'heroicon-o-currency-euro';
    case O_CURRENCY_POUND = 'heroicon-o-currency-pound';
    case O_CURRENCY_RUPEE = 'heroicon-o-currency-rupee';
    case O_CURRENCY_YEN = 'heroicon-o-currency-yen';
    case O_CURSOR_ARROW_RAYS = 'heroicon-o-cursor-arrow-rays';
    case O_CURSOR_ARROW_RIPPLE = 'heroicon-o-cursor-arrow-ripple';
    case O_DEVICE_PHONE_MOBILE = 'heroicon-o-device-phone-mobile';
    case O_DEVICE_TABLET = 'heroicon-o-device-tablet';
    case O_DOCUMENT_ARROW_DOWN = 'heroicon-o-document-arrow-down';
    case O_DOCUMENT_ARROW_UP = 'heroicon-o-document-arrow-up';
    case O_DOCUMENT_CHART_BAR = 'heroicon-o-document-chart-bar';
    case O_DOCUMENT_CHECK = 'heroicon-o-document-check';
    case O_DOCUMENT_DUPLICATE = 'heroicon-o-document-duplicate';
    case O_DOCUMENT_MAGNIFYING_GLASS = 'heroicon-o-document-magnifying-glass';
    case O_DOCUMENT_MINUS = 'heroicon-o-document-minus';
    case O_DOCUMENT_PLUS = 'heroicon-o-document-plus';
    case O_DOCUMENT_TEXT = 'heroicon-o-document-text';
    case O_DOCUMENT = 'heroicon-o-document';
    case O_ELLIPSIS_HORIZONTAL_CIRCLE = 'heroicon-o-ellipsis-horizontal-circle';
    case O_ELLIPSIS_HORIZONTAL = 'heroicon-o-ellipsis-horizontal';
    case O_ELLIPSIS_VERTICAL = 'heroicon-o-ellipsis-vertical';
    case O_ENVELOPE_OPEN = 'heroicon-o-envelope-open';
    case O_ENVELOPE = 'heroicon-o-envelope';
    case O_EXCLAMATION_CIRCLE = 'heroicon-o-exclamation-circle';
    case O_EXCLAMATION_TRIANGLE = 'heroicon-o-exclamation-triangle';
    case O_EYE_DROPPER = 'heroicon-o-eye-dropper';
    case O_EYE_SLASH = 'heroicon-o-eye-slash';
    case O_EYE = 'heroicon-o-eye';
    case O_FACE_FROWN = 'heroicon-o-face-frown';
    case O_FACE_SMILE = 'heroicon-o-face-smile';
    case O_FILM = 'heroicon-o-film';
    case O_FINGER_PRINT = 'heroicon-o-finger-print';
    case O_FIRE = 'heroicon-o-fire';
    case O_FLAG = 'heroicon-o-flag';
    case O_FOLDER_ARROW_DOWN = 'heroicon-o-folder-arrow-down';
    case O_FOLDER_MINUS = 'heroicon-o-folder-minus';
    case O_FOLDER_OPEN = 'heroicon-o-folder-open';
    case O_FOLDER_PLUS = 'heroicon-o-folder-plus';
    case O_FOLDER = 'heroicon-o-folder';
    case O_FORWARD = 'heroicon-o-forward';
    case O_FUNNEL = 'heroicon-o-funnel';
    case O_GIF = 'heroicon-o-gif';
    case O_GIFT_TOP = 'heroicon-o-gift-top';
    case O_GIFT = 'heroicon-o-gift';
    case O_GLOBE_ALT = 'heroicon-o-globe-alt';
    case O_GLOBE_AMERICAS = 'heroicon-o-globe-americas';
    case O_GLOBE_ASIA_AUSTRALIA = 'heroicon-o-globe-asia-australia';
    case O_GLOBE_EUROPE_AFRICA = 'heroicon-o-globe-europe-africa';
    case O_HAND_RAISED = 'heroicon-o-hand-raised';
    case O_HAND_THUMB_DOWN = 'heroicon-o-hand-thumb-down';
    case O_HAND_THUMB_UP = 'heroicon-o-hand-thumb-up';
    case O_HASHTAG = 'heroicon-o-hashtag';
    case O_HEART = 'heroicon-o-heart';
    case O_HOME_MODERN = 'heroicon-o-home-modern';
    case O_HOME = 'heroicon-o-home';
    case O_IDENTIFICATION = 'heroicon-o-identification';
    case O_INBOX_ARROW_DOWN = 'heroicon-o-inbox-arrow-down';
    case O_INBOX_STACK = 'heroicon-o-inbox-stack';
    case O_INBOX = 'heroicon-o-inbox';
    case O_INFORMATION_CIRCLE = 'heroicon-o-information-circle';
    case O_KEY = 'heroicon-o-key';
    case O_LANGUAGE = 'heroicon-o-language';
    case O_LIFEBUOY = 'heroicon-o-lifebuoy';
    case O_LIGHT_BULB = 'heroicon-o-light-bulb';
    case O_LINK = 'heroicon-o-link';
    case O_LIST_BULLET = 'heroicon-o-list-bullet';
    case O_LOCK_CLOSED = 'heroicon-o-lock-closed';
    case O_LOCK_OPEN = 'heroicon-o-lock-open';
    case O_MAGNIFYING_GLASS_CIRCLE = 'heroicon-o-magnifying-glass-circle';
    case O_MAGNIFYING_GLASS_MINUS = 'heroicon-o-magnifying-glass-minus';
    case O_MAGNIFYING_GLASS_PLUS = 'heroicon-o-magnifying-glass-plus';
    case O_MAGNIFYING_GLASS = 'heroicon-o-magnifying-glass';
    case O_MAP_PIN = 'heroicon-o-map-pin';
    case O_MAP = 'heroicon-o-map';
    case O_MEGAPHONE = 'heroicon-o-megaphone';
    case O_MICROPHONE = 'heroicon-o-microphone';
    case O_MINUS_CIRCLE = 'heroicon-o-minus-circle';
    case O_MINUS_SMALL = 'heroicon-o-minus-small';
    case O_MINUS = 'heroicon-o-minus';
    case O_MOON = 'heroicon-o-moon';
    case O_MUSICAL_NOTE = 'heroicon-o-musical-note';
    case O_NEWSPAPER = 'heroicon-o-newspaper';
    case O_NO_SYMBOL = 'heroicon-o-no-symbol';
    case O_PAINT_BRUSH = 'heroicon-o-paint-brush';
    case O_PAPER_AIRPLANE = 'heroicon-o-paper-airplane';
    case O_PAPER_CLIP = 'heroicon-o-paper-clip';
    case O_PAUSE_CIRCLE = 'heroicon-o-pause-circle';
    case O_PAUSE = 'heroicon-o-pause';
    case O_PENCIL_SQUARE = 'heroicon-o-pencil-square';
    case O_PENCIL = 'heroicon-o-pencil';
    case O_PHONE_ARROW_DOWN_LEFT = 'heroicon-o-phone-arrow-down-left';
    case O_PHONE_ARROW_UP_RIGHT = 'heroicon-o-phone-arrow-up-right';
    case O_PHONE_X_MARK = 'heroicon-o-phone-x-mark';
    case O_PHONE = 'heroicon-o-phone';
    case O_PHOTO = 'heroicon-o-photo';
    case O_PLAY_CIRCLE = 'heroicon-o-play-circle';
    case O_PLAY_PAUSE = 'heroicon-o-play-pause';
    case O_PLAY = 'heroicon-o-play';
    case O_PLUS_CIRCLE = 'heroicon-o-plus-circle';
    case O_PLUS_SMALL = 'heroicon-o-plus-small';
    case O_PLUS = 'heroicon-o-plus';
    case O_POWER = 'heroicon-o-power';
    case O_PRESENTATION_CHART_BAR = 'heroicon-o-presentation-chart-bar';
    case O_PRESENTATION_CHART_LINE = 'heroicon-o-presentation-chart-line';
    case O_PRINTER = 'heroicon-o-printer';
    case O_PUZZLE_PIECE = 'heroicon-o-puzzle-piece';
    case O_QR_CODE = 'heroicon-o-qr-code';
    case O_QUESTION_MARK_CIRCLE = 'heroicon-o-question-mark-circle';
    case O_QUEUE_LIST = 'heroicon-o-queue-list';
    case O_RADIO = 'heroicon-o-radio';
    case O_RECEIPT_PERCENT = 'heroicon-o-receipt-percent';
    case O_RECEIPT_REFUND = 'heroicon-o-receipt-refund';
    case O_RECTANGLE_GROUP = 'heroicon-o-rectangle-group';
    case O_RECTANGLE_STACK = 'heroicon-o-rectangle-stack';
    case O_ROCKET_LAUNCH = 'heroicon-o-rocket-launch';
    case O_RSS = 'heroicon-o-rss';
    case O_SCALE = 'heroicon-o-scale';
    case O_SCISSORS = 'heroicon-o-scissors';
    case O_SERVER_STACK = 'heroicon-o-server-stack';
    case O_SERVER = 'heroicon-o-server';
    case O_SHARE = 'heroicon-o-share';
    case O_SHIELD_CHECK = 'heroicon-o-shield-check';
    case O_SHIELD_EXCLAMATION = 'heroicon-o-shield-exclamation';
    case O_SHOPPING_BAG = 'heroicon-o-shopping-bag';
    case O_SHOPPING_CART = 'heroicon-o-shopping-cart';
    case O_SIGNAL_SLASH = 'heroicon-o-signal-slash';
    case O_SIGNAL = 'heroicon-o-signal';
    case O_SPARKLES = 'heroicon-o-sparkles';
    case O_SPEAKER_WAVE = 'heroicon-o-speaker-wave';
    case O_SPEAKER_X_MARK = 'heroicon-o-speaker-x-mark';
    case O_SQUARE_2_STACK = 'heroicon-o-square-2-stack';
    case O_SQUARE_3_STACK_3D = 'heroicon-o-square-3-stack-3d';
    case O_SQUARES_2X2 = 'heroicon-o-squares-2x2';
    case O_SQUARES_PLUS = 'heroicon-o-squares-plus';
    case O_STAR = 'heroicon-o-star';
    case O_STOP_CIRCLE = 'heroicon-o-stop-circle';
    case O_STOP = 'heroicon-o-stop';
    case O_SUN = 'heroicon-o-sun';
    case O_SWATCH = 'heroicon-o-swatch';
    case O_TABLE_CELLS = 'heroicon-o-table-cells';
    case O_TAG = 'heroicon-o-tag';
    case O_TICKET = 'heroicon-o-ticket';
    case O_TRASH = 'heroicon-o-trash';
    case O_TROPHY = 'heroicon-o-trophy';
    case O_TRUCK = 'heroicon-o-truck';
    case O_TV = 'heroicon-o-tv';
    case O_USER_CIRCLE = 'heroicon-o-user-circle';
    case O_USER_GROUP = 'heroicon-o-user-group';
    case O_USER_MINUS = 'heroicon-o-user-minus';
    case O_USER_PLUS = 'heroicon-o-user-plus';
    case O_USER = 'heroicon-o-user';
    case O_USERS = 'heroicon-o-users';
    case O_VARIABLE = 'heroicon-o-variable';
    case O_VIDEO_CAMERA_SLASH = 'heroicon-o-video-camera-slash';
    case O_VIDEO_CAMERA = 'heroicon-o-video-camera';
    case O_VIEW_COLUMNS = 'heroicon-o-view-columns';
    case O_VIEWFINDER_CIRCLE = 'heroicon-o-viewfinder-circle';
    case O_WALLET = 'heroicon-o-wallet';
    case O_WIFI = 'heroicon-o-wifi';
    case O_WINDOW = 'heroicon-o-window';
    case O_WRENCH_SCREWDRIVER = 'heroicon-o-wrench-screwdriver';
    case O_WRENCH = 'heroicon-o-wrench';
    case O_X_CIRCLE = 'heroicon-o-x-circle';
    case O_X_MARK = 'heroicon-o-x-mark';
    case S_ACADEMIC_CAP = 'heroicon-s-academic-cap';
    case S_ADJUSTMENTS_HORIZONTAL = 'heroicon-s-adjustments-horizontal';
    case S_ADJUSTMENTS_VERTICAL = 'heroicon-s-adjustments-vertical';
    case S_ARCHIVE_BOX_ARROW_DOWN = 'heroicon-s-archive-box-arrow-down';
    case S_ARCHIVE_BOX_X_MARK = 'heroicon-s-archive-box-x-mark';
    case S_ARCHIVE_BOX = 'heroicon-s-archive-box';
    case S_ARROW_DOWN_CIRCLE = 'heroicon-s-arrow-down-circle';
    case S_ARROW_DOWN_LEFT = 'heroicon-s-arrow-down-left';
    case S_ARROW_DOWN_ON_SQUARE_STACK = 'heroicon-s-arrow-down-on-square-stack';
    case S_ARROW_DOWN_ON_SQUARE = 'heroicon-s-arrow-down-on-square';
    case S_ARROW_DOWN_RIGHT = 'heroicon-s-arrow-down-right';
    case S_ARROW_DOWN_TRAY = 'heroicon-s-arrow-down-tray';
    case S_ARROW_DOWN = 'heroicon-s-arrow-down';
    case S_ARROW_LEFT_CIRCLE = 'heroicon-s-arrow-left-circle';
    case S_ARROW_LEFT_END_ON_RECTANGLE = 'heroicon-s-arrow-left-end-on-rectangle';
    case S_ARROW_LEFT_ON_RECTANGLE = 'heroicon-s-arrow-left-on-rectangle';
    case S_ARROW_LEFT_START_ON_RECTANGLE = 'heroicon-s-arrow-left-start-on-rectangle';
    case S_ARROW_LEFT = 'heroicon-s-arrow-left';
    case S_ARROW_LONG_DOWN = 'heroicon-s-arrow-long-down';
    case S_ARROW_LONG_LEFT = 'heroicon-s-arrow-long-left';
    case S_ARROW_LONG_RIGHT = 'heroicon-s-arrow-long-right';
    case S_ARROW_LONG_UP = 'heroicon-s-arrow-long-up';
    case S_ARROW_PATH_ROUNDED_SQUARE = 'heroicon-s-arrow-path-rounded-square';
    case S_ARROW_PATH = 'heroicon-s-arrow-path';
    case S_ARROW_RIGHT_CIRCLE = 'heroicon-s-arrow-right-circle';
    case S_ARROW_RIGHT_END_ON_RECTANGLE = 'heroicon-s-arrow-right-end-on-rectangle';
    case S_ARROW_RIGHT_ON_RECTANGLE = 'heroicon-s-arrow-right-on-rectangle';
    case S_ARROW_RIGHT_START_ON_RECTANGLE = 'heroicon-s-arrow-right-start-on-rectangle';
    case S_ARROW_RIGHT = 'heroicon-s-arrow-right';
    case S_ARROW_SMALL_DOWN = 'heroicon-s-arrow-small-down';
    case S_ARROW_SMALL_LEFT = 'heroicon-s-arrow-small-left';
    case S_ARROW_SMALL_RIGHT = 'heroicon-s-arrow-small-right';
    case S_ARROW_SMALL_UP = 'heroicon-s-arrow-small-up';
    case S_ARROW_TOP_RIGHT_ON_SQUARE = 'heroicon-s-arrow-top-right-on-square';
    case S_ARROW_TRENDING_DOWN = 'heroicon-s-arrow-trending-down';
    case S_ARROW_TRENDING_UP = 'heroicon-s-arrow-trending-up';
    case S_ARROW_UP_CIRCLE = 'heroicon-s-arrow-up-circle';
    case S_ARROW_UP_LEFT = 'heroicon-s-arrow-up-left';
    case S_ARROW_UP_ON_SQUARE_STACK = 'heroicon-s-arrow-up-on-square-stack';
    case S_ARROW_UP_ON_SQUARE = 'heroicon-s-arrow-up-on-square';
    case S_ARROW_UP_RIGHT = 'heroicon-s-arrow-up-right';
    case S_ARROW_UP_TRAY = 'heroicon-s-arrow-up-tray';
    case S_ARROW_UP = 'heroicon-s-arrow-up';
    case S_ARROW_UTURN_DOWN = 'heroicon-s-arrow-uturn-down';
    case S_ARROW_UTURN_LEFT = 'heroicon-s-arrow-uturn-left';
    case S_ARROW_UTURN_RIGHT = 'heroicon-s-arrow-uturn-right';
    case S_ARROW_UTURN_UP = 'heroicon-s-arrow-uturn-up';
    case S_ARROWS_POINTING_IN = 'heroicon-s-arrows-pointing-in';
    case S_ARROWS_POINTING_OUT = 'heroicon-s-arrows-pointing-out';
    case S_ARROWS_RIGHT_LEFT = 'heroicon-s-arrows-right-left';
    case S_ARROWS_UP_DOWN = 'heroicon-s-arrows-up-down';
    case S_AT_SYMBOL = 'heroicon-s-at-symbol';
    case S_BACKSPACE = 'heroicon-s-backspace';
    case S_BACKWARD = 'heroicon-s-backward';
    case S_BANKNOTES = 'heroicon-s-banknotes';
    case S_BARS_2 = 'heroicon-s-bars-2';
    case S_BARS_3_BOTTOM_LEFT = 'heroicon-s-bars-3-bottom-left';
    case S_BARS_3_BOTTOM_RIGHT = 'heroicon-s-bars-3-bottom-right';
    case S_BARS_3_CENTER_LEFT = 'heroicon-s-bars-3-center-left';
    case S_BARS_3 = 'heroicon-s-bars-3';
    case S_BARS_4 = 'heroicon-s-bars-4';
    case S_BARS_ARROW_DOWN = 'heroicon-s-bars-arrow-down';
    case S_BARS_ARROW_UP = 'heroicon-s-bars-arrow-up';
    case S_BATTERY_0 = 'heroicon-s-battery-0';
    case S_BATTERY_100 = 'heroicon-s-battery-100';
    case S_BATTERY_50 = 'heroicon-s-battery-50';
    case S_BEAKER = 'heroicon-s-beaker';
    case S_BELL_ALERT = 'heroicon-s-bell-alert';
    case S_BELL_SLASH = 'heroicon-s-bell-slash';
    case S_BELL_SNOOZE = 'heroicon-s-bell-snooze';
    case S_BELL = 'heroicon-s-bell';
    case S_BOLT_SLASH = 'heroicon-s-bolt-slash';
    case S_BOLT = 'heroicon-s-bolt';
    case S_BOOK_OPEN = 'heroicon-s-book-open';
    case S_BOOKMARK_SLASH = 'heroicon-s-bookmark-slash';
    case S_BOOKMARK_SQUARE = 'heroicon-s-bookmark-square';
    case S_BOOKMARK = 'heroicon-s-bookmark';
    case S_BRIEFCASE = 'heroicon-s-briefcase';
    case S_BUG_ANT = 'heroicon-s-bug-ant';
    case S_BUILDING_LIBRARY = 'heroicon-s-building-library';
    case S_BUILDING_OFFICE_2 = 'heroicon-s-building-office-2';
    case S_BUILDING_OFFICE = 'heroicon-s-building-office';
    case S_BUILDING_STOREFRONT = 'heroicon-s-building-storefront';
    case S_CAKE = 'heroicon-s-cake';
    case S_CALCULATOR = 'heroicon-s-calculator';
    case S_CALENDAR_DAYS = 'heroicon-s-calendar-days';
    case S_CALENDAR = 'heroicon-s-calendar';
    case S_CAMERA = 'heroicon-s-camera';
    case S_CHART_BAR_SQUARE = 'heroicon-s-chart-bar-square';
    case S_CHART_BAR = 'heroicon-s-chart-bar';
    case S_CHART_PIE = 'heroicon-s-chart-pie';
    case S_CHAT_BUBBLE_BOTTOM_CENTER_TEXT = 'heroicon-s-chat-bubble-bottom-center-text';
    case S_CHAT_BUBBLE_BOTTOM_CENTER = 'heroicon-s-chat-bubble-bottom-center';
    case S_CHAT_BUBBLE_LEFT_ELLIPSIS = 'heroicon-s-chat-bubble-left-ellipsis';
    case S_CHAT_BUBBLE_LEFT_RIGHT = 'heroicon-s-chat-bubble-left-right';
    case S_CHAT_BUBBLE_LEFT = 'heroicon-s-chat-bubble-left';
    case S_CHAT_BUBBLE_OVAL_LEFT_ELLIPSIS = 'heroicon-s-chat-bubble-oval-left-ellipsis';
    case S_CHAT_BUBBLE_OVAL_LEFT = 'heroicon-s-chat-bubble-oval-left';
    case S_CHECK_BADGE = 'heroicon-s-check-badge';
    case S_CHECK_CIRCLE = 'heroicon-s-check-circle';
    case S_CHECK = 'heroicon-s-check';
    case S_CHEVRON_DOUBLE_DOWN = 'heroicon-s-chevron-double-down';
    case S_CHEVRON_DOUBLE_LEFT = 'heroicon-s-chevron-double-left';
    case S_CHEVRON_DOUBLE_RIGHT = 'heroicon-s-chevron-double-right';
    case S_CHEVRON_DOUBLE_UP = 'heroicon-s-chevron-double-up';
    case S_CHEVRON_DOWN = 'heroicon-s-chevron-down';
    case S_CHEVRON_LEFT = 'heroicon-s-chevron-left';
    case S_CHEVRON_RIGHT = 'heroicon-s-chevron-right';
    case S_CHEVRON_UP_DOWN = 'heroicon-s-chevron-up-down';
    case S_CHEVRON_UP = 'heroicon-s-chevron-up';
    case S_CIRCLE_STACK = 'heroicon-s-circle-stack';
    case S_CLIPBOARD_DOCUMENT_CHECK = 'heroicon-s-clipboard-document-check';
    case S_CLIPBOARD_DOCUMENT_LIST = 'heroicon-s-clipboard-document-list';
    case S_CLIPBOARD_DOCUMENT = 'heroicon-s-clipboard-document';
    case S_CLIPBOARD = 'heroicon-s-clipboard';
    case S_CLOCK = 'heroicon-s-clock';
    case S_CLOUD_ARROW_DOWN = 'heroicon-s-cloud-arrow-down';
    case S_CLOUD_ARROW_UP = 'heroicon-s-cloud-arrow-up';
    case S_CLOUD = 'heroicon-s-cloud';
    case S_CODE_BRACKET_SQUARE = 'heroicon-s-code-bracket-square';
    case S_CODE_BRACKET = 'heroicon-s-code-bracket';
    case S_COG_6_TOOTH = 'heroicon-s-cog-6-tooth';
    case S_COG_8_TOOTH = 'heroicon-s-cog-8-tooth';
    case S_COG = 'heroicon-s-cog';
    case S_COMMAND_LINE = 'heroicon-s-command-line';
    case S_COMPUTER_DESKTOP = 'heroicon-s-computer-desktop';
    case S_CPU_CHIP = 'heroicon-s-cpu-chip';
    case S_CREDIT_CARD = 'heroicon-s-credit-card';
    case S_CUBE_TRANSPARENT = 'heroicon-s-cube-transparent';
    case S_CUBE = 'heroicon-s-cube';
    case S_CURRENCY_BANGLADESHI = 'heroicon-s-currency-bangladeshi';
    case S_CURRENCY_DOLLAR = 'heroicon-s-currency-dollar';
    case S_CURRENCY_EURO = 'heroicon-s-currency-euro';
    case S_CURRENCY_POUND = 'heroicon-s-currency-pound';
    case S_CURRENCY_RUPEE = 'heroicon-s-currency-rupee';
    case S_CURRENCY_YEN = 'heroicon-s-currency-yen';
    case S_CURSOR_ARROW_RAYS = 'heroicon-s-cursor-arrow-rays';
    case S_CURSOR_ARROW_RIPPLE = 'heroicon-s-cursor-arrow-ripple';
    case S_DEVICE_PHONE_MOBILE = 'heroicon-s-device-phone-mobile';
    case S_DEVICE_TABLET = 'heroicon-s-device-tablet';
    case S_DOCUMENT_ARROW_DOWN = 'heroicon-s-document-arrow-down';
    case S_DOCUMENT_ARROW_UP = 'heroicon-s-document-arrow-up';
    case S_DOCUMENT_CHART_BAR = 'heroicon-s-document-chart-bar';
    case S_DOCUMENT_CHECK = 'heroicon-s-document-check';
    case S_DOCUMENT_DUPLICATE = 'heroicon-s-document-duplicate';
    case S_DOCUMENT_MAGNIFYING_GLASS = 'heroicon-s-document-magnifying-glass';
    case S_DOCUMENT_MINUS = 'heroicon-s-document-minus';
    case S_DOCUMENT_PLUS = 'heroicon-s-document-plus';
    case S_DOCUMENT_TEXT = 'heroicon-s-document-text';
    case S_DOCUMENT = 'heroicon-s-document';
    case S_ELLIPSIS_HORIZONTAL_CIRCLE = 'heroicon-s-ellipsis-horizontal-circle';
    case S_ELLIPSIS_HORIZONTAL = 'heroicon-s-ellipsis-horizontal';
    case S_ELLIPSIS_VERTICAL = 'heroicon-s-ellipsis-vertical';
    case S_ENVELOPE_OPEN = 'heroicon-s-envelope-open';
    case S_ENVELOPE = 'heroicon-s-envelope';
    case S_EXCLAMATION_CIRCLE = 'heroicon-s-exclamation-circle';
    case S_EXCLAMATION_TRIANGLE = 'heroicon-s-exclamation-triangle';
    case S_EYE_DROPPER = 'heroicon-s-eye-dropper';
    case S_EYE_SLASH = 'heroicon-s-eye-slash';
    case S_EYE = 'heroicon-s-eye';
    case S_FACE_FROWN = 'heroicon-s-face-frown';
    case S_FACE_SMILE = 'heroicon-s-face-smile';
    case S_FILM = 'heroicon-s-film';
    case S_FINGER_PRINT = 'heroicon-s-finger-print';
    case S_FIRE = 'heroicon-s-fire';
    case S_FLAG = 'heroicon-s-flag';
    case S_FOLDER_ARROW_DOWN = 'heroicon-s-folder-arrow-down';
    case S_FOLDER_MINUS = 'heroicon-s-folder-minus';
    case S_FOLDER_OPEN = 'heroicon-s-folder-open';
    case S_FOLDER_PLUS = 'heroicon-s-folder-plus';
    case S_FOLDER = 'heroicon-s-folder';
    case S_FORWARD = 'heroicon-s-forward';
    case S_FUNNEL = 'heroicon-s-funnel';
    case S_GIF = 'heroicon-s-gif';
    case S_GIFT_TOP = 'heroicon-s-gift-top';
    case S_GIFT = 'heroicon-s-gift';
    case S_GLOBE_ALT = 'heroicon-s-globe-alt';
    case S_GLOBE_AMERICAS = 'heroicon-s-globe-americas';
    case S_GLOBE_ASIA_AUSTRALIA = 'heroicon-s-globe-asia-australia';
    case S_GLOBE_EUROPE_AFRICA = 'heroicon-s-globe-europe-africa';
    case S_HAND_RAISED = 'heroicon-s-hand-raised';
    case S_HAND_THUMB_DOWN = 'heroicon-s-hand-thumb-down';
    case S_HAND_THUMB_UP = 'heroicon-s-hand-thumb-up';
    case S_HASHTAG = 'heroicon-s-hashtag';
    case S_HEART = 'heroicon-s-heart';
    case S_HOME_MODERN = 'heroicon-s-home-modern';
    case S_HOME = 'heroicon-s-home';
    case S_IDENTIFICATION = 'heroicon-s-identification';
    case S_INBOX_ARROW_DOWN = 'heroicon-s-inbox-arrow-down';
    case S_INBOX_STACK = 'heroicon-s-inbox-stack';
    case S_INBOX = 'heroicon-s-inbox';
    case S_INFORMATION_CIRCLE = 'heroicon-s-information-circle';
    case S_KEY = 'heroicon-s-key';
    case S_LANGUAGE = 'heroicon-s-language';
    case S_LIFEBUOY = 'heroicon-s-lifebuoy';
    case S_LIGHT_BULB = 'heroicon-s-light-bulb';
    case S_LINK = 'heroicon-s-link';
    case S_LIST_BULLET = 'heroicon-s-list-bullet';
    case S_LOCK_CLOSED = 'heroicon-s-lock-closed';
    case S_LOCK_OPEN = 'heroicon-s-lock-open';
    case S_MAGNIFYING_GLASS_CIRCLE = 'heroicon-s-magnifying-glass-circle';
    case S_MAGNIFYING_GLASS_MINUS = 'heroicon-s-magnifying-glass-minus';
    case S_MAGNIFYING_GLASS_PLUS = 'heroicon-s-magnifying-glass-plus';
    case S_MAGNIFYING_GLASS = 'heroicon-s-magnifying-glass';
    case S_MAP_PIN = 'heroicon-s-map-pin';
    case S_MAP = 'heroicon-s-map';
    case S_MEGAPHONE = 'heroicon-s-megaphone';
    case S_MICROPHONE = 'heroicon-s-microphone';
    case S_MINUS_CIRCLE = 'heroicon-s-minus-circle';
    case S_MINUS_SMALL = 'heroicon-s-minus-small';
    case S_MINUS = 'heroicon-s-minus';
    case S_MOON = 'heroicon-s-moon';
    case S_MUSICAL_NOTE = 'heroicon-s-musical-note';
    case S_NEWSPAPER = 'heroicon-s-newspaper';
    case S_NO_SYMBOL = 'heroicon-s-no-symbol';
    case S_PAINT_BRUSH = 'heroicon-s-paint-brush';
    case S_PAPER_AIRPLANE = 'heroicon-s-paper-airplane';
    case S_PAPER_CLIP = 'heroicon-s-paper-clip';
    case S_PAUSE_CIRCLE = 'heroicon-s-pause-circle';
    case S_PAUSE = 'heroicon-s-pause';
    case S_PENCIL_SQUARE = 'heroicon-s-pencil-square';
    case S_PENCIL = 'heroicon-s-pencil';
    case S_PHONE_ARROW_DOWN_LEFT = 'heroicon-s-phone-arrow-down-left';
    case S_PHONE_ARROW_UP_RIGHT = 'heroicon-s-phone-arrow-up-right';
    case S_PHONE_X_MARK = 'heroicon-s-phone-x-mark';
    case S_PHONE = 'heroicon-s-phone';
    case S_PHOTO = 'heroicon-s-photo';
    case S_PLAY_CIRCLE = 'heroicon-s-play-circle';
    case S_PLAY_PAUSE = 'heroicon-s-play-pause';
    case S_PLAY = 'heroicon-s-play';
    case S_PLUS_CIRCLE = 'heroicon-s-plus-circle';
    case S_PLUS_SMALL = 'heroicon-s-plus-small';
    case S_PLUS = 'heroicon-s-plus';
    case S_POWER = 'heroicon-s-power';
    case S_PRESENTATION_CHART_BAR = 'heroicon-s-presentation-chart-bar';
    case S_PRESENTATION_CHART_LINE = 'heroicon-s-presentation-chart-line';
    case S_PRINTER = 'heroicon-s-printer';
    case S_PUZZLE_PIECE = 'heroicon-s-puzzle-piece';
    case S_QR_CODE = 'heroicon-s-qr-code';
    case S_QUESTION_MARK_CIRCLE = 'heroicon-s-question-mark-circle';
    case S_QUEUE_LIST = 'heroicon-s-queue-list';
    case S_RADIO = 'heroicon-s-radio';
    case S_RECEIPT_PERCENT = 'heroicon-s-receipt-percent';
    case S_RECEIPT_REFUND = 'heroicon-s-receipt-refund';
    case S_RECTANGLE_GROUP = 'heroicon-s-rectangle-group';
    case S_RECTANGLE_STACK = 'heroicon-s-rectangle-stack';
    case S_ROCKET_LAUNCH = 'heroicon-s-rocket-launch';
    case S_RSS = 'heroicon-s-rss';
    case S_SCALE = 'heroicon-s-scale';
    case S_SCISSORS = 'heroicon-s-scissors';
    case S_SERVER_STACK = 'heroicon-s-server-stack';
    case S_SERVER = 'heroicon-s-server';
    case S_SHARE = 'heroicon-s-share';
    case S_SHIELD_CHECK = 'heroicon-s-shield-check';
    case S_SHIELD_EXCLAMATION = 'heroicon-s-shield-exclamation';
    case S_SHOPPING_BAG = 'heroicon-s-shopping-bag';
    case S_SHOPPING_CART = 'heroicon-s-shopping-cart';
    case S_SIGNAL_SLASH = 'heroicon-s-signal-slash';
    case S_SIGNAL = 'heroicon-s-signal';
    case S_SPARKLES = 'heroicon-s-sparkles';
    case S_SPEAKER_WAVE = 'heroicon-s-speaker-wave';
    case S_SPEAKER_X_MARK = 'heroicon-s-speaker-x-mark';
    case S_SQUARE_2_STACK = 'heroicon-s-square-2-stack';
    case S_SQUARE_3_STACK_3D = 'heroicon-s-square-3-stack-3d';
    case S_SQUARES_2X2 = 'heroicon-s-squares-2x2';
    case S_SQUARES_PLUS = 'heroicon-s-squares-plus';
    case S_STAR = 'heroicon-s-star';
    case S_STOP_CIRCLE = 'heroicon-s-stop-circle';
    case S_STOP = 'heroicon-s-stop';
    case S_SUN = 'heroicon-s-sun';
    case S_SWATCH = 'heroicon-s-swatch';
    case S_TABLE_CELLS = 'heroicon-s-table-cells';
    case S_TAG = 'heroicon-s-tag';
    case S_TICKET = 'heroicon-s-ticket';
    case S_TRASH = 'heroicon-s-trash';
    case S_TROPHY = 'heroicon-s-trophy';
    case S_TRUCK = 'heroicon-s-truck';
    case S_TV = 'heroicon-s-tv';
    case S_USER_CIRCLE = 'heroicon-s-user-circle';
    case S_USER_GROUP = 'heroicon-s-user-group';
    case S_USER_MINUS = 'heroicon-s-user-minus';
    case S_USER_PLUS = 'heroicon-s-user-plus';
    case S_USER = 'heroicon-s-user';
    case S_USERS = 'heroicon-s-users';
    case S_VARIABLE = 'heroicon-s-variable';
    case S_VIDEO_CAMERA_SLASH = 'heroicon-s-video-camera-slash';
    case S_VIDEO_CAMERA = 'heroicon-s-video-camera';
    case S_VIEW_COLUMNS = 'heroicon-s-view-columns';
    case S_VIEWFINDER_CIRCLE = 'heroicon-s-viewfinder-circle';
    case S_WALLET = 'heroicon-s-wallet';
    case S_WIFI = 'heroicon-s-wifi';
    case S_WINDOW = 'heroicon-s-window';
    case S_WRENCH_SCREWDRIVER = 'heroicon-s-wrench-screwdriver';
    case S_WRENCH = 'heroicon-s-wrench';
    case S_X_CIRCLE = 'heroicon-s-x-circle';
    case S_X_MARK = 'heroicon-s-x-mark';

    public function getLabel(): ?string
    {
        return $this->name;
    }
}


================================================
FILE: app/Enums/PanelTypes.php
================================================
<?php

namespace App\Enums;

enum PanelTypes: string
{
    case FILAMENT3 = 'filament3';
}


================================================
FILE: app/Filament/Pages/CreatePanelPage.php
================================================
<?php

namespace App\Filament\Pages;

use App\Enums\PanelTypes;
use App\Jobs\Generator\PanelCreatedJob;
use App\Models\Panel;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Pages\Tenancy\RegisterTenant;

class CreatePanelPage extends RegisterTenant
{
    public static function getLabel(): string
    {
        return 'Create new Panel';
    }

    public function form(Form $form): Form
    {
        return $form
            ->schema([
                TextInput::make('name'),
                // ...
            ]);
    }

    protected function handleRegistration(array $data): Panel
    {
        $panel = Panel::create([
            ...$data,
            'user_id' => auth()->id(),
            'type' => PanelTypes::FILAMENT3,
        ]);

        dispatch(new PanelCreatedJob($panel));

        return $panel;
    }
}


================================================
FILE: app/Filament/Pages/PanelDeploymentPage.php
================================================
<?php

namespace App\Filament\Pages;

use App\Jobs\Generator\GeneratePanelCodeJob;
use App\Models\Panel;
use App\Models\PanelDeployment;
use App\Services\PanelService;
use Filament\Facades\Filament;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Bus;
use Ramsey\Uuid\Uuid;

class PanelDeploymentPage extends Page
{
    protected static ?string $navigationIcon = 'heroicon-o-document-text';

    protected static ?string $navigationLabel = 'Generate & Download Code';

    protected static ?string $title = 'Panel Generation & Download';

    protected static string $view = 'filament.pages.panel-deployment-page';

    protected static ?int $navigationSort = 2;

    public ?PanelDeployment $deployment;

    public function mount(): void
    {
        /** @var Panel $panel */
        $panel = Filament::getTenant();

        $this->deployment = $panel->panelDeployments()->latest()->first();
    }

    protected function getViewData(): array
    {
        /** @var Panel $panel */
        $panel = Filament::getTenant();
        return [
            'crudsCount' => $panel->cruds()->count(),
        ];
    }

    public function startGeneration(): void
    {
        // TODO: Clean this mess up and make the UI better.
        // UI REALLY SUCKS ATM

        /** @var Panel $panel */
        $panel = Filament::getTenant();

        $this->deployment = $panel->panelDeployments()->create([
            'status' => 'pending',
            'deployment_id' => Uuid::uuid4(),
        ]);

        $this->deployment->addNewMessage('Generation started at ' . now()->toDateTimeString() . PHP_EOL);

        Bus::batch([
            new GeneratePanelCodeJob($panel->id, $this->deployment->id),
        ])
            ->name($this->deployment->deployment_id)
            ->catch(function () {
                $this->deployment?->addNewMessage('Generation has failed...' . PHP_EOL);

                $this->deployment?->update([
                    'status' => 'failed',
                ]);
            })
            ->then(function () use ($panel) {
                $service = new PanelService($panel);
                $filePath = $service->zipFiles();

                $this->deployment?->update([
                    'status' => 'success',
                    'file_path' => $filePath,
                ]);

                $this->deployment?->addNewMessage('Generation completed at ' . now()->toDateTimeString() . PHP_EOL);
            })
            ->dispatch();

        $this->deployment = $this->deployment->fresh();

        $this->dispatch('$refresh');
    }
}


================================================
FILE: app/Filament/Pages/PanelModuleManagement.php
================================================
<?php

namespace App\Filament\Pages;

use App\Models\Module;
use App\Models\Panel;
use App\Services\ModuleService;
use Filament\Facades\Filament;
use Filament\Pages\Page;

class PanelModuleManagement extends Page
{
    protected static ?string $navigationIcon = 'heroicon-o-document-text';

    protected static string $view = 'filament.pages.panel-module-management';

    protected static bool $shouldRegisterNavigation = false;

    protected function getViewData(): array
    {
        return [
            'panel' => Filament::getTenant()?->load(['modules']),
            'modules' => Module::query()
                ->where('slug', '!=', 'base-module')
                ->pluck('title', 'slug'),
        ];
    }

    public function install(string $moduleSlug): void
    {
        /** @var Panel $panel */
        $panel = Filament::getTenant();
        $module = Module::where('slug', $moduleSlug)->firstOrFail();

        if (! $panel->modules->contains($module->id)) {
            $panel->modules()->attach($module->id);

            ModuleService::getModuleClass($panel, $module->slug)
                ->install($panel);
        }

        $this->dispatch('$refresh');
    }

    public function uninstall(string $moduleSlug): void
    {
        /** @var Panel $panel */
        $panel = Filament::getTenant();
        $module = Module::where('slug', $moduleSlug)->firstOrFail();

        if ($panel->modules->contains($module->id)) {
            $panel->modules()->detach($module->id);

            ModuleService::getModuleClass($panel, $module->slug)
                ->uninstall($panel);
        }

        $this->dispatch('$refresh');
    }
}


================================================
FILE: app/Filament/Resources/CrudResource/Pages/CreateCrud.php
================================================
<?php

namespace App\Filament\Resources\CrudResource\Pages;

use App\Enums\CrudFieldTypes;
use App\Enums\CrudTypes;
use App\Filament\Resources\CrudResource;
use App\Models\Crud;
use App\Models\CrudField;
use App\Models\Panel;
use Filament\Facades\Filament;
use Filament\Resources\Pages\CreateRecord;

class CreateCrud extends CreateRecord
{
    protected static string $resource = CrudResource::class;

    public function mutateFormDataBeforeCreate(array $data): array
    {
        /** @var Panel $tenant */
        $tenant = Filament::getTenant();

        return [
            ...$data,
            'user_id' => auth()->id(),
            'panel_id' => $tenant->id,
        ];
    }

    public function afterCreate(): void
    {
        // TODO: We should move this into a service/trait/whatever as fields are duplicated in modules

        /** @var Crud $record */
        $record = $this->record;

        if ($record->type !== CrudTypes::CRUD) {
            return;
        }

        /** @var Panel $tenant */
        $tenant = Filament::getTenant();

        $panelID = $tenant->id;

        $record->fields()->create([
            ...$this->getIDField()->toArray(),
            'panel_id' => $panelID,
        ]);
        $record->fields()->create([
            ...$this->getCreatedAtField(2)->toArray(),
            'panel_id' => $panelID,
        ]);
        $record->fields()->create([
            ...$this->getUpdatedAtField(3)->toArray(),
            'panel_id' => $panelID,
        ]);
        $record->fields()->create([
            ...$this->getDeletedAtField(4)->toArray(),
            'panel_id' => $panelID,
        ]);
    }

    protected function getIDField(): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::ID,
            'key' => str('ID')->lower()->snake()->toString(),
            'label' => 'ID',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => 1,
        ]);
    }

    protected function getCreatedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Created At')->lower()->snake()->toString(),
            'label' => 'Created At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }

    protected function getUpdatedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Updated At')->lower()->snake()->toString(),
            'label' => 'Updated At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }

    protected function getDeletedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Deleted At')->lower()->snake()->toString(),
            'label' => 'Deleted At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => true,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }
}


================================================
FILE: app/Filament/Resources/CrudResource/Pages/EditCrud.php
================================================
<?php

namespace App\Filament\Resources\CrudResource\Pages;

use App\Filament\Resources\CrudResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;

class EditCrud extends EditRecord
{
    protected static string $resource = CrudResource::class;

    protected function getHeaderActions(): array
    {
        return [
            Actions\DeleteAction::make(),
        ];
    }
}


================================================
FILE: app/Filament/Resources/CrudResource/Pages/ListCruds.php
================================================
<?php

namespace App\Filament\Resources\CrudResource\Pages;

use App\Filament\Resources\CrudResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;

class ListCruds extends ListRecords
{
    protected static string $resource = CrudResource::class;

    protected function getHeaderActions(): array
    {
        return [
            Actions\CreateAction::make(),
        ];
    }
}


================================================
FILE: app/Filament/Resources/CrudResource/RelationManagers/FieldsRelationManager.php
================================================
<?php

namespace App\Filament\Resources\CrudResource\RelationManagers;

use App\Enums\CrudFieldTypes;
use App\Enums\CrudFieldValidation;
use App\Enums\CrudTypes;
use App\Models\Crud;
use App\Models\CrudField;
use App\Models\Panel;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Rules\Unique;

class FieldsRelationManager extends RelationManager
{
    protected static string $relationship = 'fields';

    public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool
    {
        /** @var Crud $ownerRecord */
        return $ownerRecord->type === CrudTypes::CRUD;
    }

    public function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\Select::make('type')
                    ->live()
                    ->options(CrudFieldTypes::class)
                    ->required(),
                Forms\Components\Select::make('validation')
                    ->options(CrudFieldValidation::class)
                    ->required(),
                Forms\Components\Fieldset::make('crudFieldOptions')
                    ->label('Relationship Options')
                    ->relationship('crudFieldOptions')
                    ->hidden(function (Forms\Get $get) {
                        return !in_array($get('type'), [CrudFieldTypes::BELONGS_TO->value, CrudFieldTypes::BELONGS_TO_MANY->value]);
                    })
                    ->schema([
                        Forms\Components\Select::make('crud_id')
                            ->live()
                            ->label('Related CRUD')
                            ->options(function () {
                                /** @var Panel $panel */
                                $panel = Filament::getTenant();

                                return $panel->cruds()
                                    ->where('type', CrudTypes::CRUD->value)
                                    ->pluck('visual_title', 'id')
                                    ->toArray();
                            })
                            ->required(function (Forms\Get $get) {
                                return in_array($get('../type'), [CrudFieldTypes::BELONGS_TO->value, CrudFieldTypes::BELONGS_TO_MANY->value]);
                            })
                            ->afterStateUpdated(function (Forms\Set $set) {
                                $set('related_crud_field_id', null);
                            }),
                        Forms\Components\Select::make('related_crud_field_id')
                            ->live()
                            ->label('Related Field')
                            ->required(function (Forms\Get $get) {
                                return in_array($get('../type'), [CrudFieldTypes::BELONGS_TO->value, CrudFieldTypes::BELONGS_TO_MANY->value]);
                            })
                            ->options(function (Forms\Get $get) {
                                /** @var Panel $panel */
                                $panel = Filament::getTenant();

                                $crud = $panel->cruds()->find($get('crud_id'));

                                if (!$crud) {
                                    return [];
                                }

                                return $crud->fields()->pluck('label', 'id')->toArray();
                            })
                            ->hidden(function (Forms\Get $get) {
                                if (!in_array($get('../type'), [CrudFieldTypes::BELONGS_TO->value, CrudFieldTypes::BELONGS_TO_MANY->value])) {
                                    return true;
                                }

                                if (!$get('crud_id')) {
                                    return true;
                                }

                                return false;
                            }),
                    ]),
                Forms\Components\TextInput::make('label')
                    ->required()
                    ->unique(modifyRuleUsing: function (Forms\Get $get, Unique $rule, ?CrudField $record) {

                        if ($record) {
                            $key = $record->key;
                        } else if ($get('type') === CrudFieldTypes::BELONGS_TO->value) {
                            $key = str($get('label')) // @phpstan-ignore-line
                                ->lower()
                                    ->snake()
                                    ->toString() . '_id';
                        } else {
                            $key = str($get('label'))// @phpstan-ignore-line
                            ->lower()
                                ->snake()
                                ->toString();
                        }

                        /** @var Crud $crud */
                        $crud = $this->getOwnerRecord();

                        $returnRule = $rule->where('crud_id', $crud->id)
                            ->where('key', $key);

                        if ($record) {
                            $returnRule->ignore($record->id);
                        }

                        return $returnRule;
                    })
                    ->maxLength(255),
                Forms\Components\TextInput::make('tooltip')
                    ->label('Placeholder/Hint')
                    ->nullable(),
                Forms\Components\Toggle::make('in_list')
                    ->default(true),
                Forms\Components\Toggle::make('in_create')
                    ->default(true),
                Forms\Components\Toggle::make('in_edit')
                    ->default(true),
                Forms\Components\TextInput::make('order')
                    ->default(function () {
                        /** @var Crud $owner */
                        $owner = $this->getOwnerRecord();

                        return $owner->fields()
                                ->whereNotIn('key', [
                                    'created_at',
                                    'updated_at',
                                    'deleted_at',
                                ])
                                ->max('order') + 1;
                    }),
            ]);
    }

    public function table(Table $table): Table
    {
        return $table
            ->paginated(false)
            ->recordTitleAttribute('label')
            ->reorderable('order')
            ->defaultSort('order')
            ->columns([
                Tables\Columns\TextColumn::make('key'),
                Tables\Columns\TextColumn::make('label'),
                Tables\Columns\TextColumn::make('type'),
                Tables\Columns\ToggleColumn::make('in_list'),
                Tables\Columns\ToggleColumn::make('in_create'),
                Tables\Columns\ToggleColumn::make('in_edit'),
                Tables\Columns\IconColumn::make('system'),
            ])
            ->filters([
                // ...
            ])
            ->headerActions([
                Tables\Actions\CreateAction::make()
                    ->mutateFormDataUsing(function (array $data) {
                        /** @var Panel $tenant */
                        $tenant = Filament::getTenant();

                        $data['panel_id'] = $tenant->id;
                        $data['nullable'] = $data['validation'] === CrudFieldValidation::NULLABLE;

                        /** @var Crud $crud */
                        $crud = $this->getOwnerRecord();
                        $crud->fields()
                            ->whereIn('key', [
                                'created_at',
                                'updated_at',
                                'deleted_at',
                            ])
                            ->increment('order');

                        return $data;
                    }),
            ])
            ->actions([
                Tables\Actions\EditAction::make(),
                // TODO: Re-enable this before going into PROD
                //                    ->hidden(fn ($record) => $record->system),
                Tables\Actions\DeleteAction::make(),
                //                    ->hidden(fn ($record) => $record->system),
            ])
            ->bulkActions([
                Tables\Actions\BulkActionGroup::make([
                    Tables\Actions\DeleteBulkAction::make(),
                ]),
            ]);
    }
}


================================================
FILE: app/Filament/Resources/CrudResource.php
================================================
<?php

namespace App\Filament\Resources;

use App\Enums\CrudTypes;
use App\Enums\HeroIcons;
use App\Filament\Resources\CrudResource\Pages;
use App\Filament\Resources\CrudResource\RelationManagers\FieldsRelationManager;
use App\Models\Crud;
use App\Models\Panel;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Support\HtmlString;

class CrudResource extends Resource
{
    protected static ?string $model = Crud::class;

    protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';

    protected static ?string $modelLabel = 'CRUD';

    protected static ?string $pluralModelLabel = 'CRUDs';

    protected static ?int $navigationSort = 1;

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\Select::make('parent_id')
                    ->label('Parent')
                    ->options(function () {
                        /** @var Panel $tenant */
                        $tenant = Filament::getTenant();

                        return $tenant->cruds()->parent()->pluck('visual_title', 'id');
                    }),
                Forms\Components\Select::make('type')
                    ->options(CrudTypes::class)
                    ->default(CrudTypes::CRUD->value)
                    ->required(),
                Forms\Components\TextInput::make('visual_title')
                    ->required(),
                Forms\Components\Select::make('icon')
                    ->allowHtml()
                    ->searchable()
                    ->default(HeroIcons::O_RECTANGLE_STACK)
                    ->options(function (): array {
                        return collect(HeroIcons::cases())
                            ->mapWithKeys(function (HeroIcons $case) {
                                return [$case->value => "<span class='flex items-center'>
                                    ".svg($case->value, ['class' => 'h-5 w-5', 'style' => 'margin-right: 0.4rem;'])->toHtml().'
                                    <span>'.svg($case->value)->name().'</span>
                                </span>'];
                            })
                            ->toArray();
                    })
                    ->getOptionLabelUsing(function (mixed $value): string {
                        return collect(HeroIcons::cases())
                            ->filter(fn (HeroIcons $enum) => stripos($enum->value, $value->value ?? $value) !== false)
                            ->map(function (HeroIcons $case) {
                                return "<span class='flex items-center'>
                                    ".svg($case->value, ['class' => 'h-5 w-5', 'style' => 'margin-right: 0.4rem;'])->toHtml().'
                                    <span>'.svg($case->value)->name().'</span>
                                </span>';
                            })->first() ?? '';
                    })
                    ->getSearchResultsUsing(function (string $search): array {
                        return collect(HeroIcons::cases())
                            ->filter(fn (HeroIcons $enum) => stripos($enum->value, $search->value ?? $search) !== false)
                            ->mapWithKeys(function (HeroIcons $case) {
                                return [$case->value => "<span class='flex items-center'>
                                    ".svg($case->value, ['class' => 'h-5 w-5', 'style' => 'margin-right: 0.4rem;'])->toHtml().'
                                    <span>'.svg($case->value)->name().'</span>
                                </span>'];
                            })
                            ->toArray();
                    }),
                Forms\Components\TextInput::make('menu_order')
                    ->required()
                    ->default(function () {
                        /** @var Panel $tenant */
                        $tenant = Filament::getTenant();

                        return $tenant->cruds()->max('menu_order') + 1;
                    })
                    ->numeric(),
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->paginated(false)
            ->columns([
                Tables\Columns\TextColumn::make('parent.title')
                    ->numeric()
                    ->sortable(),
                Tables\Columns\TextColumn::make('title')
                    ->searchable(),
                Tables\Columns\TextColumn::make('visual_title')
                    ->searchable(),
                Tables\Columns\TextColumn::make('icon')
                    ->formatStateUsing(fn (Crud $record) => new HtmlString(svg((string) $record->icon?->value, ['class' => 'h-6 w-6'])->toHtml()))
                    ->searchable(),
                Tables\Columns\TextColumn::make('menu_order')
                    ->numeric()
                    ->sortable(),
                Tables\Columns\IconColumn::make('system')
                    ->boolean(),
                Tables\Columns\TextColumn::make('created_at')
                    ->dateTime()
                    ->sortable()
                    ->toggleable(isToggledHiddenByDefault: true),
                Tables\Columns\TextColumn::make('updated_at')
                    ->dateTime()
                    ->sortable()
                    ->toggleable(isToggledHiddenByDefault: true),
                Tables\Columns\TextColumn::make('deleted_at')
                    ->dateTime()
                    ->sortable()
                    ->toggleable(isToggledHiddenByDefault: true),
            ])
            ->filters([
                //
            ])
            ->actions([
                Tables\Actions\EditAction::make(),
            ])
            ->bulkActions([
                Tables\Actions\BulkActionGroup::make([
                    Tables\Actions\DeleteBulkAction::make(),
                ]),
            ]);
    }

    public static function getRelations(): array
    {
        return [
            FieldsRelationManager::class,
        ];
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListCruds::route('/'),
            'create' => Pages\CreateCrud::route('/create'),
            'edit' => Pages\EditCrud::route('/{record}/edit'),
        ];
    }
}


================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php

namespace App\Http\Controllers;

abstract class Controller
{
    //
}


================================================
FILE: app/Http/Responses/LoginResponse.php
================================================
<?php

namespace App\Http\Responses;

use App\Filament\Resources\CrudResource;
use Illuminate\Http\RedirectResponse;
use Livewire\Features\SupportRedirects\Redirector;

class LoginResponse extends \Filament\Http\Responses\Auth\LoginResponse
{
    public function toResponse($request): RedirectResponse|Redirector
    {
        // @phpstan-ignore-next-line
        if ($tenant = auth()->user()->getTenants(filament()->getCurrentPanel())->first()) {
            // @phpstan-ignore-next-line
            return redirect()->to(CrudResource::getUrl(tenant: $tenant));
        }

        return parent::toResponse($request);
    }
}


================================================
FILE: app/Interfaces/ModuleBase.php
================================================
<?php

namespace App\Interfaces;

use App\Enums\CrudFieldTypes;
use App\Enums\CrudTypes;
use App\Models\Crud;
use App\Models\CrudField;
use App\Models\Panel;
use App\Services\PanelService;
use Exception;
use Illuminate\Database\Eloquent\Builder;
use Nette\NotImplementedException;

class ModuleBase
{
    public string $slug = '';

    public function install(Panel $panel): void
    {
        if (! $this->slug) {
            throw new NotImplementedException('Slug is not defined');
        }

        $lastOrder = ($panel->cruds()->max('menu_order') ?? 0) + 1;

        foreach ($this->getCruds() as $crudData) {

            if ($crudData->type !== CrudTypes::PARENT && $crudData->parent_id !== null) {
                $parent = $panel->cruds()->where('title', $crudData->parent_id)->first();
            }

            $crud = $panel->cruds()->create([
                ...$crudData->toArray(),
                'menu_order' => $lastOrder,
                'module_crud' => true,
                'module_slug' => $this->slug,
                'user_id' => $panel->user_id,
                'parent_id' => $parent->id ?? null,
            ]);

            $lastOrder++;

            foreach ($crudData->fields as $fieldData) {

                $field = $crud->fields()->create([
                    ...$fieldData->toArray(),
                    'panel_id' => $panel->id,
                ]);

                if ($fieldData->crudFieldOptions) {
                    /** @var Crud|null $relatedCRUD */
                    $relatedCRUD = Crud::where('title', $fieldData->crudFieldOptions->crud_id)
                        ->where('panel_id', $panel->id)
                        ->when($fieldData->crudFieldOptions->crud_id !== 'User', function (Builder $query) {
                            return $query->where('module_slug', $this->slug);
                        })
                        ->first();

                    if (! $relatedCRUD) {
                        throw new Exception('Related CRUD not found');
                    }

                    /** @var CrudField|null $relatedField */
                    $relatedField = $relatedCRUD->fields()->where('key', $fieldData->crudFieldOptions->related_crud_field_id)->first();
                    if (! $relatedField) {
                        throw new Exception('Related field not found');
                    }

                    $field->crudFieldOptions()->create([
                        ...$fieldData->crudFieldOptions->toArray(),
                        'crud_id' => $relatedCRUD->id,
                        'related_crud_field_id' => $relatedField->id,
                    ]);
                }

            }
        }

    }

    public function uninstall(Panel $panel): void
    {
        if (! $this->slug) {
            throw new NotImplementedException('Slug is not defined');
        }

        $cruds = $panel->cruds()
            ->where('module_slug', $this->slug)
            ->with('panelFiles')
            ->get();

        $panelService = new PanelService($panel);

        foreach ($cruds as $crud) {

            foreach ($crud->panelFiles as $panelFile) {
                $panelService->deleteFile($panelFile);
                $panelFile->delete();
            }

            foreach ($crud->fields as $field) {
                $field->crudFieldOptions()->delete();
                $field->delete();
            }

            $crud->delete();
        }
    }

    /**
     * @return Crud[]
     */
    public function getCruds(): array
    {
        throw new NotImplementedException('Method getCruds is not implemented');
    }

    protected function getIDField(): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::ID,
            'key' => str('ID')->lower()->snake()->toString(),
            'label' => 'ID',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => 1,
        ]);
    }

    protected function getCreatedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Created At')->lower()->snake()->toString(),
            'label' => 'Created At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }

    protected function getUpdatedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Updated At')->lower()->snake()->toString(),
            'label' => 'Updated At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => false,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }

    protected function getDeletedAtField(int $order): CrudField
    {
        return new CrudField([
            'type' => CrudFieldTypes::DATE_TIME,
            'key' => str('Deleted At')->lower()->snake()->toString(),
            'label' => 'Deleted At',
            'validation' => 'optional',
            'in_list' => false,
            'in_show' => false,
            'in_create' => false,
            'in_edit' => false,
            'nullable' => true,
            'tooltip' => null,
            'system' => true,
            'enabled' => true,
            'order' => $order,
        ]);
    }
}


================================================
FILE: app/Jobs/Generator/GeneratePanelCodeJob.php
================================================
<?php

namespace App\Jobs\Generator;

use App\Enums\PanelTypes;
use App\Models\Panel;
use App\Models\PanelDeployment;
use App\Services\PanelService;
use Illuminate\Bus\Batchable;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\View;

class GeneratePanelCodeJob implements ShouldQueue
{
    use Batchable, Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private ?Panel $panel;

    private ?PanelDeployment $deployment;

    public function __construct(public int $panelID, public int $deploymentID)
    {
        $this->panel = Panel::find($panelID);
        $this->deployment = PanelDeployment::find($deploymentID);
    }

    public function handle(): void
    {
        if (! $this->panel || ! $this->deployment) {
            return;
        }

        $this->deployment->addNewMessage('Generation Processing...'.PHP_EOL);

        $this->panel->load([
            'cruds',
        ]);

        $service = new PanelService($this->panel);

        foreach ($this->panel->panelFiles()->where('path', 'like', '%database/migrations%')->get() as $file) {
            $service->deleteFile($file);
        }

        $panelService = new PanelService($this->panel);

        $migrations = [
            // In this array, you can add the migrations you want to create for the panel.
            // These migrations will be added to ALL panels
//            '0000_00_00_000000_create_cache_table' => '<?php'.PHP_EOL.PHP_EOL.View::make('laravel11::cacheTable')->render(),
//            '0000_00_00_000000_create_sessions_table' => '<?php'.PHP_EOL.PHP_EOL.View::make('laravel11::sessionTable')->render(),
//            '0000_00_00_000000_create_jobs_table' => '<?php'.PHP_EOL.PHP_EOL.View::make('laravel11::jobsTable')->render(),
        ];

        foreach ($migrations as $migrationName => $content) {
            $migrationPath = 'database/migrations/'.$migrationName.'.php';
            $panelService->writeFile($migrationPath, $content);
            $this->panel->panelFiles()->updateOrCreate([
                'path' => $migrationPath,
                'panel_id' => $this->panel->id,
            ], [
                'path' => $migrationPath,
                'panel_id' => $this->panel->id,
            ]);
        }

        foreach ($this->panel->cruds as $crud) {
            $this->deployment->addNewMessage("Preparing $crud->title for generation...".PHP_EOL);

            switch ($this->panel->type) {
                case PanelTypes::FILAMENT3:
                    $this->batch()
                        ?->add([
                            new \Generators\Filament3\Jobs\CreateCrudJob($this->panel, $crud, $this->deployment),
                        ]);
                    break;
                default:
                    $this->deployment->addNewMessage('Panel type not supported for generation.'.PHP_EOL);
                    break;
            }
        }
    }
}


================================================
FILE: app/Jobs/Generator/PanelCreatedJob.php
================================================
<?php

namespace App\Jobs\Generator;

use App\Models\Module;
use App\Models\Panel;
use App\Services\ModuleService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class PanelCreatedJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct(public Panel $panel)
    {
    }

    public function handle(): void
    {
        //
    }
}


================================================
FILE: app/Models/Crud.php
================================================
<?php

namespace App\Models;

use App\Enums\CrudTypes;
use App\Enums\HeroIcons;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @property CrudTypes $type
 * @property bool $is_hidden
 * @property bool $system
 * @property bool $module_crud
 * @property HeroIcons|null $icon
 * @property string $model_class_name
 * @property string $model_snake_plural_class_name
 */
class Crud extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'panel_id',
        'user_id',
        'parent_id',
        'type',
        'title',
        'visual_title',
        'icon',
        'menu_order',
        'is_hidden',
        'module_crud',
        'module_slug',
        'module_order',
        'system',
    ];

    /**
     * @return string[]
     */
    protected function casts(): array
    {
        return [
            'is_hidden' => 'boolean',
            'system' => 'boolean',
            'module_crud' => 'boolean',
            'type' => CrudTypes::class,
            'icon' => HeroIcons::class,
        ];
    }

    protected static function booted(): void
    {
        self::creating(static function (Crud $crud) {
            if (! $crud->title) {
                $crud->title = str($crud->visual_title)
                    ->camel()
                    ->singular()
                    ->ucfirst()
                    ->toString();
            }
        });
    }

    protected function icon(): Attribute
    {
        return Attribute::make(
            set: fn (HeroIcons|string|null $value) => ! $value ? HeroIcons::O_RECTANGLE_STACK : $value,
        );
    }

    public function scopeParent(Builder $query): Builder
    {
        return $query->where('type', CrudTypes::PARENT);
    }

    public function panel(): BelongsTo
    {
        return $this->belongsTo(Panel::class);
    }

    public function parent(): BelongsTo
    {
        return $this->belongsTo(Crud::class);
    }

    public function fields(): HasMany
    {
        return $this->hasMany(CrudField::class);
    }

    public function panelFiles(): HasMany
    {
        return $this->hasMany(PanelFile::class);
    }

    protected function modelClassName(): Attribute
    {
        return Attribute::make(
            get: fn () => str($this->title)->singular()->studly()->toString(),
        );
    }

    protected function modelSnakePluralClassName(): Attribute
    {
        return Attribute::make(
            get: fn () => str($this->title)->plural()->snake()->toString(),
        );
    }
}


================================================
FILE: app/Models/CrudField.php
================================================
<?php

namespace App\Models;

use App\Enums\CrudFieldTypes;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @property CrudFieldTypes $type
 * @property string $key
 * @property bool $in_list
 * @property bool $in_show
 * @property bool $in_create
 * @property bool $in_edit
 * @property bool $nullable
 * @property bool $system
 * @property bool $enabled
 * @property string $form_key_name
 * @property string $table_key_name
 */
class CrudField extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'panel_id',
        'crud_id',
        'type',
        'key',
        'label',
        'validation',
        'in_list',
        'in_show',
        'in_create',
        'in_edit',
        'nullable',
        'tooltip',
        'system',
        'enabled',
        'order',
    ];

    /**
     * @return string[]
     */
    protected function casts(): array
    {
        return [
            'type' => CrudFieldTypes::class,
            'in_list' => 'boolean',
            'in_show' => 'boolean',
            'in_create' => 'boolean',
            'in_edit' => 'boolean',
            'nullable' => 'boolean',
            'system' => 'boolean',
            'enabled' => 'boolean',
        ];
    }

    protected static function booted(): void
    {
        self::creating(function (CrudField $field) {
            if ($field->type === CrudFieldTypes::BELONGS_TO) {
                $field->key = str($field->label)
                    ->lower()
                    ->snake()
                    ->toString().'_id';
            } else {
                $field->key = str($field->label)
                    ->lower()
                    ->snake()
                    ->toString();
            }
        });
    }

    public function crud(): BelongsTo
    {
        return $this->belongsTo(Crud::class);
    }

    public function panel(): BelongsTo
    {
        return $this->belongsTo(Panel::class);
    }

    public function crudFieldOptions(): HasOne
    {
        return $this->hasOne(CrudFieldOptions::class);
    }

    public function panelFiles(): HasMany
    {
        return $this->hasMany(PanelFile::class);
    }

    protected function formKeyName(): Attribute
    {
        return Attribute::make(
            get: function (): string {
                if (! str($this->key)->endsWith('_id') && $this->type === CrudFieldTypes::BELONGS_TO) {
                    return str($this->key.'_id')->lower()->snake();
                }

                return str($this->key)->lower()->snake();
            },
        );
    }

    protected function tableKeyName(): Attribute
    {
        return Attribute::make(
            get: function (): string {
                $crudFieldOptions = $this->crudFieldOptions;

                if (! $crudFieldOptions) {
                    return str($this->key)->lower()->snake();
                }

                return sprintf(
                    '%s.%s',
                    $crudFieldOptions->relationship,
                    $crudFieldOptions->relatedCrudField->key
                );
            },
        );
    }
}


================================================
FILE: app/Models/CrudFieldOptions.php
================================================
<?php

namespace App\Models;

use App\Enums\CrudFieldTypes;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @property string|null $relationship
 * @property-read CrudField $relatedCrudField
 */
class CrudFieldOptions extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'crud_field_id',
        'crud_id',
        'related_crud_field_id',
        'relationship',
    ];

    protected static function booted(): void
    {
        self::creating(function (CrudFieldOptions $fieldOptions) {
            if ($fieldOptions->crudField) {
                if ($fieldOptions->crudField->type === CrudFieldTypes::BELONGS_TO_MANY) {
                    $fieldOptions->relationship = str($fieldOptions->crud?->title)->snake()->plural()->toString();
                } else {
                    $fieldOptions->relationship = str($fieldOptions->crud?->title)->snake()->singular()->toString();
                }
            }
        });
    }

    public function crudField(): BelongsTo
    {
        return $this->belongsTo(CrudField::class);
    }

    public function relatedCrudField(): BelongsTo
    {
        return $this->belongsTo(CrudField::class, 'related_crud_field_id');
    }

    public function crud(): BelongsTo
    {
        return $this->belongsTo(Crud::class);
    }
}


================================================
FILE: app/Models/Module.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Module extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'title',
        'slug',
    ];
}


================================================
FILE: app/Models/Panel.php
================================================
<?php

namespace App\Models;

use App\Enums\PanelTypes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @property PanelTypes $type
 */
class Panel extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'user_id',
        'name',
        'type',
    ];

    /**
     * @return string[]
     */
    protected function casts(): array
    {
        return [
            'type' => PanelTypes::class,
        ];
    }

    public function scopeForUser(Builder $query, User $user): Builder
    {
        return $query->where('user_id', $user->id);
    }

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }

    public function cruds(): HasMany
    {
        return $this->hasMany(Crud::class);
    }

    public function panelFiles(): HasMany
    {
        return $this->hasMany(PanelFile::class);
    }

    public function modules(): BelongsToMany
    {
        return $this->belongsToMany(Module::class);
    }

    public function panelDeployments(): HasMany
    {
        return $this->hasMany(PanelDeployment::class);
    }
}


================================================
FILE: app/Models/PanelDeployment.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;

class PanelDeployment extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'panel_id',
        'deployment_id',
        'status',
        'file_path',
        'deployment_log',
    ];

    public function panel(): BelongsTo
    {
        return $this->belongsTo(Panel::class);
    }

    public function addNewMessage(string $message): void
    {
        $log = $this->fresh();

        if (! $log) {
            return;
        }

        $log->deployment_log .= $message;
        $log->save();
    }
}


================================================
FILE: app/Models/PanelFile.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;

class PanelFile extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'panel_id',
        'crud_id',
        'crud_field_id',
        'path',
        'content',
    ];

    public function panel(): BelongsTo
    {
        return $this->belongsTo(Panel::class);
    }

    public function crud(): BelongsTo
    {
        return $this->belongsTo(Crud::class);
    }

    public function crudField(): BelongsTo
    {
        return $this->belongsTo(CrudField::class);
    }
}


================================================
FILE: app/Models/User.php
================================================
<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Filament\Models\Contracts\FilamentUser;
use Filament\Models\Contracts\HasTenants;
use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Collection;

class User extends Authenticatable implements FilamentUser, HasTenants
{
    use HasFactory, MustVerifyEmail, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * Get the attributes that should be cast.
     *
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'email_verified_at' => 'datetime',
            'password' => 'hashed',
        ];
    }

    public function panels(): HasMany
    {
        return $this->hasMany(Panel::class);
    }

    public function canAccessPanel(\Filament\Panel $panel): bool
    {
        return true; // TODO: Add logic to check if user can access panel builder
    }

    public function canAccessTenant(Model $tenant): bool
    {
        return $this->panels()->whereKey($tenant)->exists();
    }

    public function getTenants(\Filament\Panel $panel): array|Collection
    {
        return $this->panels;
    }
}


================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        $this->app->singleton(
            \Filament\Http\Responses\Auth\Contracts\LoginResponse::class,
            \App\Http\Responses\LoginResponse::class
        );
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        //
    }
}


================================================
FILE: app/Providers/Filament/BuilderPanelProvider.php
================================================
<?php

namespace App\Providers\Filament;

use App\Filament\Pages\CreatePanelPage;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
use Filament\Widgets;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;

class BuilderPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->tenant(\App\Models\Panel::class)
            ->tenantRegistration(CreatePanelPage::class)
            ->default()
            ->id('builder')
            ->path('builder')
            ->login()
            ->colors([
                'primary' => Color::Amber,
            ])
            ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
            ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
            ->pages([
                //
            ])
            ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
            ->widgets([
                Widgets\AccountWidget::class,
                Widgets\FilamentInfoWidget::class,
            ])
            ->middleware([
                EncryptCookies::class,
                AddQueuedCookiesToResponse::class,
                StartSession::class,
                AuthenticateSession::class,
                ShareErrorsFromSession::class,
                VerifyCsrfToken::class,
                SubstituteBindings::class,
                DisableBladeIconComponents::class,
                DispatchServingFilamentEvent::class,
            ])
            ->authMiddleware([
                Authenticate::class,
            ])
            ->renderHook(
                'panels::body.end',
                fn () => view('filament.footer'),
            );
    }
}


================================================
FILE: app/Providers/HorizonServiceProvider.php
================================================
<?php

namespace App\Providers;

use App\Models\User;
use Illuminate\Support\Facades\Gate;
use Laravel\Horizon\Horizon;
use Laravel\Horizon\HorizonApplicationServiceProvider;

class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        parent::boot();

        // Horizon::routeSmsNotificationsTo('15556667777');
        // Horizon::routeMailNotificationsTo('example@example.com');
        // Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
    }

    /**
     * Register the Horizon gate.
     *
     * This gate determines who can access Horizon in non-local environments.
     */
    protected function gate(): void
    {
        Gate::define('viewHorizon', function (User $user) {
            return in_array($user->email, [
                //
            ]);
        });
    }
}


================================================
FILE: app/Providers/TelescopeServiceProvider.php
================================================
<?php

namespace App\Providers;

use App\Models\User;
use Illuminate\Support\Facades\Gate;
use Laravel\Telescope\IncomingEntry;
use Laravel\Telescope\Telescope;
use Laravel\Telescope\TelescopeApplicationServiceProvider;

class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        // Telescope::night();

        $this->hideSensitiveRequestDetails();

        $isLocal = $this->app->environment('local');

        Telescope::filter(function (IncomingEntry $entry) use ($isLocal) {
            return $isLocal ||
                $entry->isReportableException() ||
                $entry->isFailedRequest() ||
                $entry->isFailedJob() ||
                $entry->isScheduledTask() ||
                $entry->hasMonitoredTag();
        });
    }

    /**
     * Prevent sensitive request details from being logged by Telescope.
     */
    protected function hideSensitiveRequestDetails(): void
    {
        if ($this->app->environment('local')) {
            return;
        }

        Telescope::hideRequestParameters(['_token']);

        Telescope::hideRequestHeaders([
            'cookie',
            'x-csrf-token',
            'x-xsrf-token',
        ]);
    }

    /**
     * Register the Telescope gate.
     *
     * This gate determines who can access Telescope in non-local environments.
     */
    protected function gate(): void
    {
        Gate::define('viewTelescope', function (User $user) {
            return in_array($user->email, [
                //
            ]);
        });
    }
}


================================================
FILE: app/Services/ModuleService.php
================================================
<?php

namespace App\Services;

use App\Enums\PanelTypes;
use App\Interfaces\ModuleBase;
use App\Models\Panel;
use Generators\Filament3\Modules\ModuleManager;

class ModuleService
{
    /**
     * @return string[]
     */
    public function listModules(): array
    {
        return [
            'base-module' => 'Panel Base',
            'asset-management' => 'Asset Management',
            'client-management' => 'Client Management',
        ];
    }

    public static function getModuleClass(Panel $panel, string $moduleSlug): ModuleBase
    {
        // TODO: Think about a way to pass panel to the module directly here, to avoid passing it into the install
        return match ($panel->type) {
            PanelTypes::FILAMENT3 => ModuleManager::getModule($moduleSlug)
        };
    }
}


================================================
FILE: app/Services/PanelService.php
================================================
<?php

namespace App\Services;

use App\Models\Panel;
use App\Models\PanelFile;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Facades\Storage;
use ZipArchive;

class PanelService
{
    public function __construct(public Panel $panel)
    {
    }

    public function getStoragePath(): string
    {
        return storage_path(
            sprintf(
                'app/panels/%s',
                str($this->panel->id.' - '.$this->panel->name)->slug()
            )
        );
    }

    public function writeFile(string $path, string $contents): void
    {
        $path = $this->getStoragePath().DIRECTORY_SEPARATOR.$path;

        $filesystem = app(Filesystem::class);

        $filesystem->ensureDirectoryExists(
            pathinfo($path, PATHINFO_DIRNAME),
        );

        $filesystem->put($path, $contents);
    }

    public function deleteFile(PanelFile $file): void
    {
        $path = $this->getStoragePath().DIRECTORY_SEPARATOR.$file->path;

        $filesystem = app(Filesystem::class);

        // TODO: This should also delete empty directories

        $filesystem->delete($path);
    }

    public function zipFiles(): string
    {
        $zipPath = $this->getStoragePath().DIRECTORY_SEPARATOR.'panel.zip';

        $filesystem = app(Filesystem::class);

        $filesystem->ensureDirectoryExists(
            pathinfo($zipPath, PATHINFO_DIRNAME),
        );

        $zip = new ZipArchive();

        $zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE);

        $files = $this->panel->panelFiles;

        foreach ($files as $file) {
            if (! $filesystem->exists($this->getStoragePath().DIRECTORY_SEPARATOR.$file->path)) {
                continue;
            }

            $zip->addFile(
                $this->getStoragePath().DIRECTORY_SEPARATOR.$file->path,
                $file->path,
            );
        }

        $zip->close();

        $filesystem->move($zipPath, storage_path(sprintf('app/public/%s.zip',
            str($this->panel->id.' - '.$this->panel->name)->slug()
        )));

        return Storage::url(sprintf('%s.zip',
            str($this->panel->id.' - '.$this->panel->name)->slug()
        ));
    }
}


================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php

use Symfony\Component\Console\Input\ArgvInput;

define('LARAVEL_START', microtime(true));

// Register the Composer autoloader...
require __DIR__.'/vendor/autoload.php';

// Bootstrap Laravel and handle the command...
$status = (require_once __DIR__.'/bootstrap/app.php')
    ->handleCommand(new ArgvInput);

exit($status);


================================================
FILE: bootstrap/app.php
================================================
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();


================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore


================================================
FILE: bootstrap/providers.php
================================================
<?php

return [
    App\Providers\AppServiceProvider::class,
    App\Providers\Filament\BuilderPanelProvider::class,
    App\Providers\HorizonServiceProvider::class,
    App\Providers\TelescopeServiceProvider::class,
];


================================================
FILE: composer.json
================================================
{
    "name": "laraveldaily/filastart",
    "type": "project",
    "description": "Build your Filament panel visually with... Filament!",
    "keywords": [
        "laravel",
        "framework",
        "filament"
    ],
    "version": "1.0.5",
    "license": "MIT",
    "require": {
        "php": "^8.2",
        "ext-zip": "*",
        "filament/filament": "^3.2",
        "generators/filament3": "*",
        "generators/laravel11": "*",
        "laravel/breeze": "^2.0",
        "laravel/framework": "^11.0",
        "laravel/horizon": "^5.24",
        "laravel/telescope": "^5.0",
        "laravel/tinker": "^2.9",
        "predis/predis": "^2.2"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.12",
        "fakerphp/faker": "^1.23",
        "larastan/larastan": "^2.9",
        "laravel/pint": "^1.13",
        "laravel/sail": "^1.26",
        "mockery/mockery": "^1.6",
        "nunomaduro/collision": "^8.0",
        "pestphp/pest": "^2.0",
        "pestphp/pest-plugin-laravel": "^2.0",
        "pestphp/pest-plugin-livewire": "^2.1",
        "pestphp/pest-plugin-type-coverage": "^2.8",
        "spatie/laravel-ignition": "^2.4"
    },
    "repositories": [
        {
            "type": "path",
            "url": "systems/generators/filament3",
            "options": {
                "symlink": true
            }
        },
        {
            "type": "path",
            "url": "systems/generators/laravel11",
            "options": {
                "symlink": true
            }
        }
    ],
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi",
            "@php artisan filament:upgrade"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi",
            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
            "@php artisan migrate --graceful --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}


================================================
FILE: config/app.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Application Name
    |--------------------------------------------------------------------------
    |
    | This value is the name of your application, which will be used when the
    | framework needs to place the application's name in a notification or
    | other UI elements where an application name needs to be displayed.
    |
    */

    'name' => env('APP_NAME', 'Laravel'),

    /*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services the application utilizes. Set this in your ".env" file.
    |
    */

    'env' => env('APP_ENV', 'production'),

    /*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => (bool) env('APP_DEBUG', false),

    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | the application so that it's available within Artisan commands.
    |
    */

    'url' => env('APP_URL', 'http://localhost'),

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. The timezone
    | is set to "UTC" by default as it is suitable for most use cases.
    |
    */

    'timezone' => env('APP_TIMEZONE', 'UTC'),

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by Laravel's translation / localization methods. This option can be
    | set to any locale for which you plan to have translation strings.
    |
    */

    'locale' => env('APP_LOCALE', 'en'),

    'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),

    'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),

    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is utilized by Laravel's encryption services and should be set
    | to a random, 32 character string to ensure that all encrypted values
    | are secure. You should do this prior to deploying the application.
    |
    */

    'cipher' => 'AES-256-CBC',

    'key' => env('APP_KEY'),

    'previous_keys' => [
        ...array_filter(
            explode(',', env('APP_PREVIOUS_KEYS', ''))
        ),
    ],

    /*
    |--------------------------------------------------------------------------
    | Maintenance Mode Driver
    |--------------------------------------------------------------------------
    |
    | These configuration options determine the driver used to determine and
    | manage Laravel's "maintenance mode" status. The "cache" driver will
    | allow maintenance mode to be controlled across multiple machines.
    |
    | Supported drivers: "file", "cache"
    |
    */

    'maintenance' => [
        'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
        'store' => env('APP_MAINTENANCE_STORE', 'database'),
    ],

];


================================================
FILE: config/auth.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option defines the default authentication "guard" and password
    | reset "broker" for your application. You may change these values
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => env('AUTH_GUARD', 'web'),
        'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | which utilizes session storage plus the Eloquent user provider.
    |
    | All authentication guards have a user provider, which defines how the
    | users are actually retrieved out of your database or other storage
    | system used by the application. Typically, Eloquent is utilized.
    |
    | Supported: "session"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication guards have a user provider, which defines how the
    | users are actually retrieved out of your database or other storage
    | system used by the application. Typically, Eloquent is utilized.
    |
    | If you have multiple user tables or models you may configure multiple
    | providers to represent the model / table. These providers may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => env('AUTH_MODEL', App\Models\User::class),
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | These configuration options specify the behavior of Laravel's password
    | reset functionality, including the table utilized for token storage
    | and the user provider that is invoked to actually retrieve users.
    |
    | The expiry time is the number of minutes that each reset token will be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    | The throttle setting is the number of seconds a user must wait before
    | generating more password reset tokens. This prevents the user from
    | quickly generating a very large amount of password reset tokens.
    |
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
            'expire' => 60,
            'throttle' => 60,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Password Confirmation Timeout
    |--------------------------------------------------------------------------
    |
    | Here you may define the amount of seconds before a password confirmation
    | window expires and users are asked to re-enter their password via the
    | confirmation screen. By default, the timeout lasts for three hours.
    |
    */

    'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),

];


================================================
FILE: config/cache.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Cache Store
    |--------------------------------------------------------------------------
    |
    | This option controls the default cache store that will be used by the
    | framework. This connection is utilized if another isn't explicitly
    | specified when running a cache operation inside the application.
    |
    */

    'default' => env('CACHE_STORE', 'database'),

    /*
    |--------------------------------------------------------------------------
    | Cache Stores
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the cache "stores" for your application as
    | well as their drivers. You may even define multiple stores for the
    | same cache driver to group types of items stored in your caches.
    |
    | Supported drivers: "apc", "array", "database", "file", "memcached",
    |                    "redis", "dynamodb", "octane", "null"
    |
    */

    'stores' => [

        'array' => [
            'driver' => 'array',
            'serialize' => false,
        ],

        'database' => [
            'driver' => 'database',
            'table' => env('DB_CACHE_TABLE', 'cache'),
            'connection' => env('DB_CACHE_CONNECTION'),
            'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
        ],

        'file' => [
            'driver' => 'file',
            'path' => storage_path('framework/cache/data'),
            'lock_path' => storage_path('framework/cache/data'),
        ],

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT => 2000,
            ],
            'servers' => [
                [
                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => env('REDIS_CACHE_CONNECTION', 'cache'),
            'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
        ],

        'dynamodb' => [
            'driver' => 'dynamodb',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
            'endpoint' => env('DYNAMODB_ENDPOINT'),
        ],

        'octane' => [
            'driver' => 'octane',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Cache Key Prefix
    |--------------------------------------------------------------------------
    |
    | When utilizing the APC, database, memcached, Redis, and DynamoDB cache
    | stores, there might be other applications using the same cache. For
    | that reason, you may prefix every cache key to avoid collisions.
    |
    */

    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),

];


================================================
FILE: config/database.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for database operations. This is
    | the connection which will be utilized unless another connection
    | is explicitly specified when you execute a query / statement.
    |
    */

    'default' => env('DB_CONNECTION', 'sqlite'),

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Below are all of the database connections defined for your application.
    | An example configuration is provided for each database system which
    | is supported by Laravel. You're free to add / remove connections.
    |
    */

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DB_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'mariadb' => [
            'driver' => 'mariadb',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => env('DB_CHARSET', 'utf8'),
            'prefix' => '',
            'prefix_indexes' => true,
            'search_path' => 'public',
            'sslmode' => 'prefer',
        ],

        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DB_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => env('DB_CHARSET', 'utf8'),
            'prefix' => '',
            'prefix_indexes' => true,
            // 'encrypt' => env('DB_ENCRYPT', 'yes'),
            // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run on the database.
    |
    */

    'migrations' => [
        'table' => 'migrations',
        'update_date_on_publish' => true,
    ],

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer body of commands than a typical key-value system
    | such as Memcached. You may define your connection settings here.
    |
    */

    'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME'),
            'password' => env('REDIS_PASSWORD'),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
        ],

        'cache' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME'),
            'password' => env('REDIS_PASSWORD'),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
        ],

    ],

];


================================================
FILE: config/filament.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Broadcasting
    |--------------------------------------------------------------------------
    |
    | By uncommenting the Laravel Echo configuration, you may connect Filament
    | to any Pusher-compatible websockets server.
    |
    | This will allow your users to receive real-time notifications.
    |
    */

    'broadcasting' => [

        //        'echo' => [
        //            'broadcaster' => 'reverb',
        //            'key' => env('VITE_REVERB_APP_KEY'),
        //            'cluster' => env('VITE_REVERB_APP_CLUSTER'),
        //            'wsHost' => env('VITE_REVERB_HOST'),
        //            'wsPort' => env('VITE_REVERB_PORT'),
        //            'wssPort' => env('VITE_REVERB_PORT'),
        //            'authEndpoint' => '/broadcasting/auth',
        //            'disableStats' => true,
        //            'encrypted' => true,
        //            'forceTLS' => false, // This is needed
        //        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | This is the storage disk Filament will use to store files. You may use
    | any of the disks defined in the `config/filesystems.php`.
    |
    */

    'default_filesystem_disk' => env('FILAMENT_FILESYSTEM_DISK', 'public'),

    /*
    |--------------------------------------------------------------------------
    | Assets Path
    |--------------------------------------------------------------------------
    |
    | This is the directory where Filament's assets will be published to. It
    | is relative to the `public` directory of your Laravel application.
    |
    | After changing the path, you should run `php artisan filament:assets`.
    |
    */

    'assets_path' => null,

    /*
    |--------------------------------------------------------------------------
    | Cache Path
    |--------------------------------------------------------------------------
    |
    | This is the directory that Filament will use to store cache files that
    | are used to optimize the registration of components.
    |
    | After changing the path, you should run `php artisan filament:cache-components`.
    |
    */

    'cache_path' => base_path('bootstrap/cache/filament'),

    /*
    |--------------------------------------------------------------------------
    | Livewire Loading Delay
    |--------------------------------------------------------------------------
    |
    | This sets the delay before loading indicators appear.
    |
    | Setting this to 'none' makes indicators appear immediately, which can be
    | desirable for high-latency connections. Setting it to 'default' applies
    | Livewire's standard 200ms delay.
    |
    */

    'livewire_loading_delay' => 'default',

];


================================================
FILE: config/filesystems.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. The "local" disk, as well as a variety of cloud
    | based disks are available to your application for file storage.
    |
    */

    'default' => env('FILESYSTEM_DISK', 'local'),

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Below you may configure as many filesystem disks as necessary, and you
    | may even configure multiple disks for the same driver. Examples for
    | most supported storage drivers are configured here for reference.
    |
    | Supported Drivers: "local", "ftp", "sftp", "s3"
    |
    */

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
            'throw' => false,
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
            'throw' => false,
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
            'throw' => false,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Symbolic Links
    |--------------------------------------------------------------------------
    |
    | Here you may configure the symbolic links that will be created when the
    | `storage:link` Artisan command is executed. The array keys should be
    | the locations of the links and the values should be their targets.
    |
    */

    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

];


================================================
FILE: config/horizon.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Horizon Domain
    |--------------------------------------------------------------------------
    |
    | This is the subdomain where Horizon will be accessible from. If this
    | setting is null, Horizon will reside under the same domain as the
    | application. Otherwise, this value will serve as the subdomain.
    |
    */

    'domain' => env('HORIZON_DOMAIN'),

    /*
    |--------------------------------------------------------------------------
    | Horizon Path
    |--------------------------------------------------------------------------
    |
    | This is the URI path where Horizon will be accessible from. Feel free
    | to change this path to anything you like. Note that the URI will not
    | affect the paths of its internal API that aren't exposed to users.
    |
    */

    'path' => env('HORIZON_PATH', 'horizon'),

    /*
    |--------------------------------------------------------------------------
    | Horizon Redis Connection
    |-----------------------------------------------------------------
Download .txt
gitextract_6saz8xc6/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       └── tests.yml
├── .gitignore
├── .readme/
│   ├── CustomFields.md
│   ├── ModifyingTemplates.md
│   ├── ModulesReadme.md
│   └── excalidraw/
│       └── FileCopyingGraph.excalidraw
├── README.md
├── app/
│   ├── Enums/
│   │   ├── CrudFieldTypes.php
│   │   ├── CrudFieldValidation.php
│   │   ├── CrudTypes.php
│   │   ├── HeroIcons.php
│   │   └── PanelTypes.php
│   ├── Filament/
│   │   ├── Pages/
│   │   │   ├── CreatePanelPage.php
│   │   │   ├── PanelDeploymentPage.php
│   │   │   └── PanelModuleManagement.php
│   │   └── Resources/
│   │       ├── CrudResource/
│   │       │   ├── Pages/
│   │       │   │   ├── CreateCrud.php
│   │       │   │   ├── EditCrud.php
│   │       │   │   └── ListCruds.php
│   │       │   └── RelationManagers/
│   │       │       └── FieldsRelationManager.php
│   │       └── CrudResource.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Controller.php
│   │   └── Responses/
│   │       └── LoginResponse.php
│   ├── Interfaces/
│   │   └── ModuleBase.php
│   ├── Jobs/
│   │   └── Generator/
│   │       ├── GeneratePanelCodeJob.php
│   │       └── PanelCreatedJob.php
│   ├── Models/
│   │   ├── Crud.php
│   │   ├── CrudField.php
│   │   ├── CrudFieldOptions.php
│   │   ├── Module.php
│   │   ├── Panel.php
│   │   ├── PanelDeployment.php
│   │   ├── PanelFile.php
│   │   └── User.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── Filament/
│   │   │   └── BuilderPanelProvider.php
│   │   ├── HorizonServiceProvider.php
│   │   └── TelescopeServiceProvider.php
│   └── Services/
│       ├── ModuleService.php
│       └── PanelService.php
├── artisan
├── bootstrap/
│   ├── app.php
│   ├── cache/
│   │   └── .gitignore
│   └── providers.php
├── composer.json
├── config/
│   ├── app.php
│   ├── auth.php
│   ├── cache.php
│   ├── database.php
│   ├── filament.php
│   ├── filesystems.php
│   ├── horizon.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── reverb.php
│   ├── services.php
│   ├── session.php
│   └── telescope.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── 0001_01_01_000000_create_users_table.php
│   │   ├── 0001_01_01_000001_create_cache_table.php
│   │   ├── 0001_01_01_000002_create_jobs_table.php
│   │   ├── 2024_03_28_095305_create_panels_table.php
│   │   ├── 2024_04_02_141033_create_cruds_table.php
│   │   ├── 2024_04_02_141038_create_crud_fields_table.php
│   │   ├── 2024_04_03_105626_create_crud_field_options_table.php
│   │   ├── 2024_04_04_154557_create_panel_files_table.php
│   │   ├── 2024_04_04_155618_create_modules_table.php
│   │   ├── 2024_04_04_162604_create_module_panel_table.php
│   │   ├── 2024_04_09_153641_create_panel_deployments_table.php
│   │   └── 2024_04_18_124339_create_telescope_entries_table.php
│   └── seeders/
│       └── DatabaseSeeder.php
├── package.json
├── phpstan.neon
├── phpunit.xml
├── postcss.config.js
├── public/
│   ├── .htaccess
│   ├── css/
│   │   └── filament/
│   │       ├── filament/
│   │       │   └── app.css
│   │       ├── forms/
│   │       │   └── forms.css
│   │       └── support/
│   │           └── support.css
│   ├── index.php
│   ├── js/
│   │   └── filament/
│   │       ├── filament/
│   │       │   ├── app.js
│   │       │   └── echo.js
│   │       ├── forms/
│   │       │   └── components/
│   │       │       ├── color-picker.js
│   │       │       ├── date-time-picker.js
│   │       │       ├── file-upload.js
│   │       │       ├── key-value.js
│   │       │       ├── markdown-editor.js
│   │       │       ├── rich-editor.js
│   │       │       ├── select.js
│   │       │       ├── tags-input.js
│   │       │       └── textarea.js
│   │       ├── notifications/
│   │       │   └── notifications.js
│   │       ├── support/
│   │       │   ├── async-alpine.js
│   │       │   └── support.js
│   │       ├── tables/
│   │       │   └── components/
│   │       │       └── table.js
│   │       └── widgets/
│   │           └── components/
│   │               ├── chart.js
│   │               └── stats-overview/
│   │                   └── stat/
│   │                       └── chart.js
│   ├── robots.txt
│   └── vendor/
│       ├── horizon/
│       │   ├── app-dark.css
│       │   ├── app.css
│       │   ├── app.js
│       │   ├── manifest.json
│       │   ├── mix-manifest.json
│       │   ├── styles-dark.css
│       │   └── styles.css
│       └── telescope/
│           ├── app-dark.css
│           ├── app.css
│           ├── app.js
│           └── mix-manifest.json
├── resources/
│   ├── css/
│   │   └── app.css
│   ├── js/
│   │   ├── app.js
│   │   ├── bootstrap.js
│   │   └── echo.js
│   └── views/
│       └── filament/
│           ├── footer.blade.php
│           └── pages/
│               ├── create-panel-page.blade.php
│               ├── panel-deployment-page.blade.php
│               ├── panel-module-management.blade.php
│               ├── panels/
│               │   └── edit-panel.blade.php
│               ├── panels-create-panel.blade.php
│               ├── panels-edit-panel.blade.php
│               └── panels-panels-list.blade.php
├── routes/
│   ├── auth.php
│   ├── console.php
│   └── web.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── debugbar/
│   │   └── .gitignore
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── systems/
│   └── generators/
│       ├── filament3/
│       │   ├── composer.json
│       │   └── src/
│       │       ├── Filament3ServiceProvider.php
│       │       ├── Generators/
│       │       │   ├── Fields/
│       │       │   │   ├── BaseField.php
│       │       │   │   ├── BelongsToField.php
│       │       │   │   ├── BelongsToManyField.php
│       │       │   │   ├── CheckboxField.php
│       │       │   │   ├── DateField.php
│       │       │   │   ├── DateTimeField.php
│       │       │   │   ├── EmailField.php
│       │       │   │   ├── FileField.php
│       │       │   │   ├── FloatField.php
│       │       │   │   ├── IdField.php
│       │       │   │   ├── ImageField.php
│       │       │   │   ├── MoneyField.php
│       │       │   │   ├── PasswordField.php
│       │       │   │   ├── RetrieveGeneratorForField.php
│       │       │   │   ├── TextAreaField.php
│       │       │   │   └── TextField.php
│       │       │   └── Files/
│       │       │       ├── CreateFile.php
│       │       │       ├── EditFile.php
│       │       │       ├── FileBase.php
│       │       │       ├── FileReplacements.php
│       │       │       ├── ListFile.php
│       │       │       └── ResourceFile.php
│       │       ├── IndentsLines.php
│       │       ├── Jobs/
│       │       │   ├── CreateCreateFileJob.php
│       │       │   ├── CreateCrudJob.php
│       │       │   ├── CreateEditFileJob.php
│       │       │   ├── CreateListFileJob.php
│       │       │   └── CreateResourceFileJob.php
│       │       ├── Modules/
│       │       │   ├── AssetManagementModule.php
│       │       │   ├── BaseModule.php
│       │       │   ├── ClientManagementModule.php
│       │       │   └── ModuleManager.php
│       │       └── templates/
│       │           ├── createPage.blade.php
│       │           ├── editPage.blade.php
│       │           ├── listPage.blade.php
│       │           └── resource.blade.php
│       └── laravel11/
│           ├── composer.json
│           └── src/
│               ├── Generators/
│               │   ├── MigrationGenerator.php
│               │   ├── MigrationLineGenerator.php
│               │   └── ModelGenerator.php
│               ├── Jobs/
│               │   ├── CreateManyToManyMigrationJob.php
│               │   ├── CreateMigrationJob.php
│               │   └── CreateModelJob.php
│               ├── Laravel11ServiceProvider.php
│               └── templates/
│                   ├── cacheTable.blade.php
│                   ├── jobsTable.blade.php
│                   ├── migration.blade.php
│                   ├── model.blade.php
│                   └── sessionTable.blade.php
├── tailwind.config.js
├── tests/
│   ├── Feature/
│   │   ├── Crud/
│   │   │   ├── CrudFieldsTest.php
│   │   │   └── CrudTest.php
│   │   ├── Filament3/
│   │   │   ├── Fields/
│   │   │   │   ├── BelongsToFieldTest.php
│   │   │   │   ├── BelongsToManyFieldTest.php
│   │   │   │   ├── CheckboxFieldTest.php
│   │   │   │   ├── DateFieldTest.php
│   │   │   │   ├── DateTimeFieldTest.php
│   │   │   │   ├── EmailFieldTest.php
│   │   │   │   ├── FileFieldTest.php
│   │   │   │   ├── FloatFieldTest.php
│   │   │   │   ├── IdFieldTest.php
│   │   │   │   ├── ImageFieldTest.php
│   │   │   │   ├── MoneyFieldTest.php
│   │   │   │   ├── PasswordFieldTest.php
│   │   │   │   ├── TextFieldTest.php
│   │   │   │   └── TextareaFieldTest.php
│   │   │   └── Files/
│   │   │       ├── CreateFileTest.php
│   │   │       ├── EditFileTest.php
│   │   │       ├── FileReplacementsTest.php
│   │   │       ├── ListFileTest.php
│   │   │       └── ResourceFileTest.php
│   │   ├── Laravel11/
│   │   │   └── Files/
│   │   │       ├── MigrationTest.php
│   │   │       └── ModelTest.php
│   │   └── Panel/
│   │       └── PanelTest.php
│   ├── Pest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
└── vite.config.js
Download .txt
Showing preview only (740K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7438 symbols across 106 files)

FILE: app/Enums/CrudFieldTypes.php
  method getLabel (line 26) | public function getLabel(): ?string

FILE: app/Enums/CrudFieldValidation.php
  method getLabel (line 12) | public function getLabel(): ?string

FILE: app/Enums/CrudTypes.php
  method getLabel (line 13) | public function getLabel(): ?string

FILE: app/Enums/HeroIcons.php
  method getLabel (line 1186) | public function getLabel(): ?string

FILE: app/Filament/Pages/CreatePanelPage.php
  class CreatePanelPage (line 12) | class CreatePanelPage extends RegisterTenant
    method getLabel (line 14) | public static function getLabel(): string
    method form (line 19) | public function form(Form $form): Form
    method handleRegistration (line 28) | protected function handleRegistration(array $data): Panel

FILE: app/Filament/Pages/PanelDeploymentPage.php
  class PanelDeploymentPage (line 14) | class PanelDeploymentPage extends Page
    method mount (line 28) | public function mount(): void
    method getViewData (line 36) | protected function getViewData(): array
    method startGeneration (line 45) | public function startGeneration(): void

FILE: app/Filament/Pages/PanelModuleManagement.php
  class PanelModuleManagement (line 11) | class PanelModuleManagement extends Page
    method getViewData (line 19) | protected function getViewData(): array
    method install (line 29) | public function install(string $moduleSlug): void
    method uninstall (line 45) | public function uninstall(string $moduleSlug): void

FILE: app/Filament/Resources/CrudResource.php
  class CrudResource (line 19) | class CrudResource extends Resource
    method form (line 31) | public static function form(Form $form): Form
    method table (line 96) | public static function table(Table $table): Table
    method getRelations (line 142) | public static function getRelations(): array
    method getPages (line 149) | public static function getPages(): array

FILE: app/Filament/Resources/CrudResource/Pages/CreateCrud.php
  class CreateCrud (line 14) | class CreateCrud extends CreateRecord
    method mutateFormDataBeforeCreate (line 18) | public function mutateFormDataBeforeCreate(array $data): array
    method afterCreate (line 30) | public function afterCreate(): void
    method getIDField (line 64) | protected function getIDField(): CrudField
    method getCreatedAtField (line 83) | protected function getCreatedAtField(int $order): CrudField
    method getUpdatedAtField (line 102) | protected function getUpdatedAtField(int $order): CrudField
    method getDeletedAtField (line 121) | protected function getDeletedAtField(int $order): CrudField

FILE: app/Filament/Resources/CrudResource/Pages/EditCrud.php
  class EditCrud (line 9) | class EditCrud extends EditRecord
    method getHeaderActions (line 13) | protected function getHeaderActions(): array

FILE: app/Filament/Resources/CrudResource/Pages/ListCruds.php
  class ListCruds (line 9) | class ListCruds extends ListRecords
    method getHeaderActions (line 13) | protected function getHeaderActions(): array

FILE: app/Filament/Resources/CrudResource/RelationManagers/FieldsRelationManager.php
  class FieldsRelationManager (line 20) | class FieldsRelationManager extends RelationManager
    method canViewForRecord (line 24) | public static function canViewForRecord(Model $ownerRecord, string $pa...
    method form (line 30) | public function form(Form $form): Form
    method table (line 152) | public function table(Table $table): Table

FILE: app/Http/Controllers/Controller.php
  class Controller (line 5) | abstract class Controller

FILE: app/Http/Responses/LoginResponse.php
  class LoginResponse (line 9) | class LoginResponse extends \Filament\Http\Responses\Auth\LoginResponse
    method toResponse (line 11) | public function toResponse($request): RedirectResponse|Redirector

FILE: app/Interfaces/ModuleBase.php
  class ModuleBase (line 15) | class ModuleBase
    method install (line 19) | public function install(Panel $panel): void
    method uninstall (line 82) | public function uninstall(Panel $panel): void
    method getCruds (line 114) | public function getCruds(): array
    method getIDField (line 119) | protected function getIDField(): CrudField
    method getCreatedAtField (line 138) | protected function getCreatedAtField(int $order): CrudField
    method getUpdatedAtField (line 157) | protected function getUpdatedAtField(int $order): CrudField
    method getDeletedAtField (line 176) | protected function getDeletedAtField(int $order): CrudField

FILE: app/Jobs/Generator/GeneratePanelCodeJob.php
  class GeneratePanelCodeJob (line 17) | class GeneratePanelCodeJob implements ShouldQueue
    method __construct (line 25) | public function __construct(public int $panelID, public int $deploymen...
    method handle (line 31) | public function handle(): void

FILE: app/Jobs/Generator/PanelCreatedJob.php
  class PanelCreatedJob (line 14) | class PanelCreatedJob implements ShouldQueue
    method __construct (line 18) | public function __construct(public Panel $panel)
    method handle (line 22) | public function handle(): void

FILE: app/Models/Crud.php
  class Crud (line 23) | class Crud extends Model
    method casts (line 46) | protected function casts(): array
    method booted (line 57) | protected static function booted(): void
    method icon (line 70) | protected function icon(): Attribute
    method scopeParent (line 77) | public function scopeParent(Builder $query): Builder
    method panel (line 82) | public function panel(): BelongsTo
    method parent (line 87) | public function parent(): BelongsTo
    method fields (line 92) | public function fields(): HasMany
    method panelFiles (line 97) | public function panelFiles(): HasMany
    method modelClassName (line 102) | protected function modelClassName(): Attribute
    method modelSnakePluralClassName (line 109) | protected function modelSnakePluralClassName(): Attribute

FILE: app/Models/CrudField.php
  class CrudField (line 26) | class CrudField extends Model
    method casts (line 51) | protected function casts(): array
    method booted (line 65) | protected static function booted(): void
    method crud (line 82) | public function crud(): BelongsTo
    method panel (line 87) | public function panel(): BelongsTo
    method crudFieldOptions (line 92) | public function crudFieldOptions(): HasOne
    method panelFiles (line 97) | public function panelFiles(): HasMany
    method formKeyName (line 102) | protected function formKeyName(): Attribute
    method tableKeyName (line 115) | protected function tableKeyName(): Attribute

FILE: app/Models/CrudFieldOptions.php
  class CrudFieldOptions (line 14) | class CrudFieldOptions extends Model
    method booted (line 25) | protected static function booted(): void
    method crudField (line 38) | public function crudField(): BelongsTo
    method relatedCrudField (line 43) | public function relatedCrudField(): BelongsTo
    method crud (line 48) | public function crud(): BelongsTo

FILE: app/Models/Module.php
  class Module (line 8) | class Module extends Model

FILE: app/Models/Panel.php
  class Panel (line 16) | class Panel extends Model
    method casts (line 29) | protected function casts(): array
    method scopeForUser (line 36) | public function scopeForUser(Builder $query, User $user): Builder
    method user (line 41) | public function user(): BelongsTo
    method cruds (line 46) | public function cruds(): HasMany
    method panelFiles (line 51) | public function panelFiles(): HasMany
    method modules (line 56) | public function modules(): BelongsToMany
    method panelDeployments (line 61) | public function panelDeployments(): HasMany

FILE: app/Models/PanelDeployment.php
  class PanelDeployment (line 9) | class PanelDeployment extends Model
    method panel (line 21) | public function panel(): BelongsTo
    method addNewMessage (line 26) | public function addNewMessage(string $message): void

FILE: app/Models/PanelFile.php
  class PanelFile (line 9) | class PanelFile extends Model
    method panel (line 21) | public function panel(): BelongsTo
    method crud (line 26) | public function crud(): BelongsTo
    method crudField (line 31) | public function crudField(): BelongsTo

FILE: app/Models/User.php
  class User (line 16) | class User extends Authenticatable implements FilamentUser, HasTenants
    method casts (line 46) | protected function casts(): array
    method panels (line 54) | public function panels(): HasMany
    method canAccessPanel (line 59) | public function canAccessPanel(\Filament\Panel $panel): bool
    method canAccessTenant (line 64) | public function canAccessTenant(Model $tenant): bool
    method getTenants (line 69) | public function getTenants(\Filament\Panel $panel): array|Collection

FILE: app/Providers/AppServiceProvider.php
  class AppServiceProvider (line 7) | class AppServiceProvider extends ServiceProvider
    method register (line 12) | public function register(): void
    method boot (line 23) | public function boot(): void

FILE: app/Providers/Filament/BuilderPanelProvider.php
  class BuilderPanelProvider (line 21) | class BuilderPanelProvider extends PanelProvider
    method panel (line 23) | public function panel(Panel $panel): Panel

FILE: app/Providers/HorizonServiceProvider.php
  class HorizonServiceProvider (line 10) | class HorizonServiceProvider extends HorizonApplicationServiceProvider
    method boot (line 15) | public function boot(): void
    method gate (line 29) | protected function gate(): void

FILE: app/Providers/TelescopeServiceProvider.php
  class TelescopeServiceProvider (line 11) | class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
    method register (line 16) | public function register(): void
    method hideSensitiveRequestDetails (line 37) | protected function hideSensitiveRequestDetails(): void
    method gate (line 57) | protected function gate(): void

FILE: app/Services/ModuleService.php
  class ModuleService (line 10) | class ModuleService
    method listModules (line 15) | public function listModules(): array
    method getModuleClass (line 24) | public static function getModuleClass(Panel $panel, string $moduleSlug...

FILE: app/Services/PanelService.php
  class PanelService (line 11) | class PanelService
    method __construct (line 13) | public function __construct(public Panel $panel)
    method getStoragePath (line 17) | public function getStoragePath(): string
    method writeFile (line 27) | public function writeFile(string $path, string $contents): void
    method deleteFile (line 40) | public function deleteFile(PanelFile $file): void
    method zipFiles (line 51) | public function zipFiles(): string

FILE: database/factories/UserFactory.php
  class UserFactory (line 12) | class UserFactory extends Factory
    method definition (line 24) | public function definition(): array
    method unverified (line 38) | public function unverified(): static

FILE: database/migrations/0001_01_01_000000_create_users_table.php
  method up (line 12) | public function up(): void
  method down (line 43) | public function down(): void

FILE: database/migrations/0001_01_01_000001_create_cache_table.php
  method up (line 12) | public function up(): void
  method down (line 30) | public function down(): void

FILE: database/migrations/0001_01_01_000002_create_jobs_table.php
  method up (line 12) | public function up(): void
  method down (line 51) | public function down(): void

FILE: database/migrations/2024_03_28_095305_create_panels_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_02_141033_create_cruds_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_02_141038_create_crud_fields_table.php
  method up (line 10) | public function up(): void

FILE: database/migrations/2024_04_03_105626_create_crud_field_options_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_04_154557_create_panel_files_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_04_155618_create_modules_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_04_162604_create_module_panel_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_09_153641_create_panel_deployments_table.php
  method up (line 9) | public function up(): void

FILE: database/migrations/2024_04_18_124339_create_telescope_entries_table.php
  method getConnection (line 12) | public function getConnection(): ?string
  method up (line 20) | public function up(): void
  method down (line 62) | public function down(): void

FILE: database/seeders/DatabaseSeeder.php
  class DatabaseSeeder (line 12) | class DatabaseSeeder extends Seeder
    method run (line 17) | public function run(): void

FILE: public/js/filament/filament/app.js
  function C (line 1) | function C(e,t,a){if(e.addEventListener){e.addEventListener(t,a,!1);retu...
  function T (line 1) | function T(e){if(e.type=="keypress"){var t=String.fromCharCode(e.which);...
  function V (line 1) | function V(e,t){return e.sort().join(",")===t.sort().join(",")}
  function $ (line 1) | function $(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function B (line 1) | function B(e){if(e.preventDefault){e.preventDefault();return}e.returnVal...
  function H (line 1) | function H(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelB...
  function O (line 1) | function O(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}
  function J (line 1) | function J(){if(!S){S={};for(var e in h)e>95&&e<112||h.hasOwnProperty(e)...
  function U (line 1) | function U(e,t,a){return a||(a=J()[e]?"keydown":"keypress"),a=="keypress...
  function X (line 1) | function X(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.spli...
  function I (line 1) | function I(e,t){var a,c,b,P=[];for(a=X(e),b=0;b<a.length;++b)c=a[b],q[c]...
  function D (line 1) | function D(e,t){return e===null||e===d?!1:e===t?!0:D(e.parentNode,t)}
  function v (line 1) | function v(e){var t=this;if(e=e||d,!(t instanceof v))return new v(e);t.t...

FILE: public/js/filament/filament/echo.js
  function a (line 1) | function a(c){if(h[c])return h[c].exports;var s=h[c]={i:c,l:!1,exports:{...
  function w (line 1) | function w(){this.constructor=v}
  function b (line 1) | function b(v){v===void 0&&(v="="),this._paddingCharacter=v}
  function N (line 1) | function N(b){return d.encode(b)}
  function P (line 1) | function P(b){return d.decode(b)}
  function v (line 1) | function v(){return b!==null&&b.apply(this,arguments)||this}
  function C (line 1) | function C(b){return S.encode(b)}
  function x (line 1) | function x(b){return S.decode(b)}
  function f (line 1) | function f(P){for(var T=new Uint8Array(d(P)),S=0,C=0;C<P.length;C++){var...
  function d (line 1) | function d(P){for(var T=0,S=0;S<P.length;S++){var C=P.charCodeAt(S);if(C...
  function N (line 1) | function N(P){for(var T=[],S=0;S<P.length;S++){var C=P[S];if(C&128){var ...
  function e (line 1) | function e(t,n){this.lastId=0,this.prefix=t,this.name=n}
  function e (line 1) | function e(t){this.options=t,this.receivers=t.receivers||s,this.loading={}}
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n){var r=this.constructor,i=e.call(this,n)||this;return Objec...
  function t (line 1) | function t(n,r){var i=this.constructor,o=e.call(this,r)||this;return o.s...
  function ke (line 1) | function ke(e){return Oe(Pe(e))}
  function e (line 1) | function e(t,n,r,i){var o=this;this.clear=n,this.timer=t(function(){o.ti...
  function r (line 1) | function r(){this.constructor=t}
  function Ee (line 1) | function Ee(e){window.clearTimeout(e)}
  function Le (line 1) | function Le(e){window.clearInterval(e)}
  function t (line 1) | function t(n,r){return e.call(this,setTimeout,Ee,n,function(i){return r(...
  function t (line 1) | function t(n,r){return e.call(this,setInterval,Le,n,function(i){return r...
  function U (line 1) | function U(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n...
  function je (line 1) | function je(){for(var e=["Pusher"],t=0;t<arguments.length;t++)typeof arg...
  function qt (line 1) | function qt(e,t){var n=Array.prototype.indexOf;if(e===null)return-1;if(n...
  function W (line 1) | function W(e,t){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)...
  function Ut (line 1) | function Ut(e){var t=[];return W(e,function(n,r){t.push(r)}),t}
  function Ne (line 1) | function Ne(e){var t=[];return W(e,function(n){t.push(n)}),t}
  function rt (line 1) | function rt(e,t,n){for(var r=0;r<e.length;r++)t.call(n||window,e[r],r,e)}
  function Dt (line 1) | function Dt(e,t){for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r,e,n));r...
  function qe (line 1) | function qe(e,t){var n={};return W(e,function(r,i){n[i]=t(r)}),n}
  function Ht (line 1) | function Ht(e,t){t=t||function(i){return!!i};for(var n=[],r=0;r<e.length...
  function Mt (line 1) | function Mt(e,t){var n={};return W(e,function(r,i){(t&&t(r,i,e,n)||r)&&(...
  function Ue (line 1) | function Ue(e){var t=[];return W(e,function(n,r){t.push([r,n])}),t}
  function zt (line 1) | function zt(e,t){for(var n=0;n<e.length;n++)if(t(e[n],n,e))return!0;retu...
  function De (line 1) | function De(e,t){for(var n=0;n<e.length;n++)if(!t(e[n],n,e))return!1;ret...
  function He (line 1) | function He(e){return qe(e,function(t){return typeof t=="object"&&(t=ct(...
  function Me (line 1) | function Me(e){var t=Mt(e,function(r){return r!==void 0}),n=Dt(Ue(He(t))...
  function ze (line 1) | function ze(e){var t=[],n=[];return function r(i,o){var u,p,_;switch(typ...
  function ct (line 1) | function ct(e){try{return JSON.stringify(e)}catch{return JSON.stringify(...
  function e (line 1) | function e(){this.globalLog=function(t){window.console&&window.console.l...
  function e (line 1) | function e(t){this.src=t}
  function e (line 1) | function e(t,n){this.url=t,this.data=n}
  function gt (line 1) | function gt(e,t,n){var r=e+(t.useTLS?"s":""),i=t.useTLS?t.hostTLS:t.host...
  function _t (line 1) | function _t(e,t){var n="/app/"+e,r="?protocol="+d.PROTOCOL+"&client=js&v...
  function e (line 1) | function e(){this._callbacks={}}
  function bt (line 1) | function bt(e){return"_"+e}
  function e (line 1) | function e(t){this.callbacks=new nn,this.global_callbacks=[],this.failTh...
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r,i,o,u){var p=e.call(this)||this;return p.initialize=m.tra...
  function e (line 1) | function e(t){this.hooks=t}
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(){var n=e.call(this)||this,r=n;return window.addEventListener...
  function e (line 1) | function e(t,n,r){this.manager=t,this.transport=n,this.minPingDelay=r.mi...
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r){var i=e.call(this)||this;return i.id=n,i.transport=r,i.a...
  function e (line 1) | function e(t,n){this.transport=t,this.callback=n,this.bindListeners()}
  function e (line 1) | function e(t,n){this.timeline=t,this.options=n||{}}
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r){var i=e.call(this,function(o,u){A.debug("No callbacks on...
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(){return e!==null&&e.apply(this,arguments)||this}
  function e (line 1) | function e(){this.reset()}
  function r (line 1) | function r(){this.constructor=t}
  function i (line 1) | function i(o){return o instanceof n?o:new n(function(u){u(o)})}
  function p (line 1) | function p(k){try{g(r.next(k))}catch(E){u(E)}}
  function _ (line 1) | function _(k){try{g(r.throw(k))}catch(E){u(E)}}
  function g (line 1) | function g(k){k.done?o(k.value):i(k.value).then(p,_)}
  function p (line 1) | function p(g){return function(k){return _([g,k])}}
  function _ (line 1) | function _(g){if(r)throw new TypeError("Generator is already executing."...
  function t (line 1) | function t(n,r){var i=e.call(this,n,r)||this;return i.members=new jn,i}
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r,i){var o=e.call(this,n,r)||this;return o.key=null,o.nacl=...
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r){var i=e.call(this)||this;i.state="initialized",i.connect...
  function e (line 1) | function e(){this.channels={}}
  function Qn (line 1) | function Qn(e,t){if(e.indexOf("private-encrypted-")===0){if(t.config.nac...
  function e (line 1) | function e(t){this.options=t||{},this.livesLeft=this.options.lives||1/0}
  function e (line 1) | function e(t,n){this.strategies=t,this.loop=!!n.loop,this.failFast=!!n.f...
  function e (line 1) | function e(t){this.strategies=t}
  function tr (line 1) | function tr(e,t,n){var r=Dt(e,function(i,o,u,p){return i.connect(t,n(o,p...
  function er (line 1) | function er(e){return De(e,function(t){return!!t.error})}
  function nr (line 1) | function nr(e){!e.error&&!e.aborted&&(e.abort(),e.aborted=!0)}
  function e (line 1) | function e(t,n,r){this.strategy=t,this.transports=n,this.ttl=r.ttl||1800...
  function Ct (line 1) | function Ct(e){return"pusherTransport"+(e?"TLS":"NonTLS")}
  function or (line 1) | function or(e){var t=m.getLocalStorage();if(t)try{var n=t[Ct(e)];if(n)re...
  function sr (line 1) | function sr(e,t,n){var r=m.getLocalStorage();if(r)try{r[Ct(e)]=ct({times...
  function Qt (line 1) | function Qt(e){var t=m.getLocalStorage();if(t)try{delete t[Ct(e)]}catch{}}
  function e (line 1) | function e(t,n){var r=n.delay;this.strategy=t,this.options={delay:r}}
  function e (line 1) | function e(t,n,r){this.test=t,this.trueBranch=n,this.falseBranch=r}
  function e (line 1) | function e(t){this.strategy=t}
  function ot (line 1) | function ot(e){return function(){return e.isSupported()}}
  function i (line 1) | function i(ce,_i,bi,mi,wi){var ue=n(e,ce,_i,bi,mi,wi);return r[ce]=ue,ue}
  function r (line 1) | function r(){this.constructor=t}
  function t (line 1) | function t(n,r,i){var o=e.call(this)||this;return o.hooks=n,o.method=r,o...
  function e (line 2) | function e(t,n){this.hooks=t,this.session=Yt(1e3)+"/"+Tr(8),this.locatio...
  function kr (line 2) | function kr(e){var t=/([^\?]*)\/*(\??.*)/.exec(e);return{base:t[1],query...
  function Sr (line 2) | function Sr(e,t){return e.base+"/"+t+"/xhr_send"}
  function Kt (line 2) | function Kt(e){var t=e.indexOf("?")===-1?"?":"&";return e+t+"t="+ +new D...
  function Cr (line 2) | function Cr(e,t){var n=/(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(e);retur...
  function Yt (line 2) | function Yt(e){return m.randomInt(e)}
  function Tr (line 2) | function Tr(e){for(var t=[],n=0;n<e;n++)t.push(Yt(32).toString(32));retu...
  function e (line 2) | function e(t,n,r){this.key=t,this.session=n,this.events=[],this.options=...
  function e (line 2) | function e(t,n,r,i){this.name=t,this.priority=n,this.transport=r,this.op...
  function Zt (line 2) | function Zt(e,t){return j.defer(function(){t(e)}),{abort:function(){},fo...
  function Kr (line 2) | function Kr(e,t){var n={activityTimeout:e.activityTimeout||d.activityTim...
  function Yr (line 2) | function Yr(e){return e.httpHost?e.httpHost:e.cluster?"sockjs-"+e.cluste...
  function $r (line 2) | function $r(e){return e.wsHost?e.wsHost:e.cluster?te(e.cluster):te(d.clu...
  function te (line 2) | function te(e){return"ws-"+e+".pusher.com"}
  function Zr (line 2) | function Zr(e){return m.getProtocol()==="https:"?!0:e.forceTLS!==!1}
  function ti (line 2) | function ti(e){return"enableStats"in e?e.enableStats:"disableStats"in e?...
  function ei (line 2) | function ei(e){var t=et(et({},d.userAuthentication),e.userAuthentication...
  function ni (line 2) | function ni(e,t){var n;return"channelAuthorization"in e?n=et(et({},d.cha...
  function ri (line 2) | function ri(e,t){var n=ni(e,t);return"customHandler"in n&&n.customHandle...
  function r (line 2) | function r(){this.constructor=t}
  function t (line 2) | function t(n){var r=e.call(this,function(i,o){A.debug("No callbacks on w...
  function ai (line 2) | function ai(){var e,t,n=new Promise(function(r,i){e=r,t=i});return{promi...
  function r (line 2) | function r(){this.constructor=t}
  function t (line 2) | function t(n){var r=e.call(this,function(i,o){A.debug("No callbacks on u...
  function e (line 2) | function e(t,n){var r=this;if(fi(t),n=n||{},!n.cluster&&!(n.wsHost||n.ht...
  function fi (line 2) | function fi(e){if(e==null)throw"You must pass your app key when you inst...
  function ft (line 2) | function ft(l){"@babel/helpers - typeof";return ft=typeof Symbol=="funct...
  function L (line 2) | function L(l,h){if(!(l instanceof h))throw new TypeError("Cannot call a ...
  function le (line 2) | function le(l,h){for(var a=0;a<h.length;a++){var c=h[a];c.enumerable=c.e...
  function R (line 2) | function R(l,h,a){return h&&le(l.prototype,h),a&&le(l,a),Object.definePr...
  function st (line 2) | function st(){return st=Object.assign||function(l){for(var h=1;h<argumen...
  function D (line 2) | function D(l,h){if(typeof h!="function"&&h!==null)throw new TypeError("S...
  function pt (line 2) | function pt(l){return pt=Object.setPrototypeOf?Object.getPrototypeOf:fun...
  function Et (line 2) | function Et(l,h){return Et=Object.setPrototypeOf||function(c,s){return c...
  function Ei (line 2) | function Ei(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.constru...
  function Li (line 2) | function Li(l){if(l===void 0)throw new ReferenceError("this hasn't been ...
  function Ri (line 2) | function Ri(l,h){if(h&&(typeof h=="object"||typeof h=="function"))return...
  function H (line 2) | function H(l){var h=Ei();return function(){var c=pt(l),s;if(h){var f=pt(...
  function l (line 2) | function l(){L(this,l)}
  function l (line 2) | function l(h){L(this,l),this.namespace=h}
  function a (line 2) | function a(c,s,f){var d;return L(this,a),d=h.call(this),d.name=s,d.pushe...
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(c,s,f){var d;return L(this,a),d=h.call(this),d.events={},d.li...
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function a (line 2) | function a(){return L(this,a),h.apply(this,arguments)}
  function l (line 2) | function l(h){L(this,l),this._defaultOptions={auth:{headers:{}},authEndp...
  function a (line 2) | function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels...
  function a (line 2) | function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels...
  function a (line 2) | function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels...
  function l (line 2) | function l(h){L(this,l),this.options=h,this.connect(),this.options.witho...

FILE: public/js/filament/forms/components/color-picker.js
  method constructor (line 1) | constructor(t,r,o,s){let a=$(`<div role="slider" tabindex="0" part="${r}...
  method dragging (line 1) | set dragging(t){let r=t?document.addEventListener:document.removeEventLi...
  method handleEvent (line 1) | handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.prev...
  method style (line 1) | style(t){t.forEach((r,o)=>{for(let s in r)this.nodes[o].style.setPropert...
  method constructor (line 1) | constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-va...
  method update (line 1) | update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:d({h:t,s:...
  method getMove (line 1) | getMove(t,r){return{h:r?c(this.h+t.x*360,0,360):360*t.x}}
  method constructor (line 1) | constructor(t){super(t,"saturation",'aria-label="Color"',!0)}
  method update (line 1) | update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,colo...
  method getMove (line 1) | getMove(t,r){return{s:r?c(this.hsva.s+t.x*100,0,100):t.x*100,v:r?c(this....
  method observedAttributes (line 1) | static get observedAttributes(){return["color"]}
  method [g] (line 1) | get[g](){return[Z,tt,rt]}
  method [x] (line 1) | get[x](){return[H,S]}
  method color (line 1) | get color(){return this[et]}
  method color (line 1) | set color(t){if(!this[T](t)){let r=this.colorModel.toHsva(t);this[_](r),...
  method constructor (line 1) | constructor(){super();let t=$(`<style>${this[g].join("")}</style>`),r=th...
  method connectedCallback (line 1) | connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;de...
  method attributeChangedCallback (line 1) | attributeChangedCallback(t,r,o){let s=this.colorModel.fromAttr(o);this[T...
  method handleEvent (line 1) | handleEvent(t){let r=this[ot],o={...r,...t.detail};this[_](o);let s;!O(o...
  method [T] (line 1) | [T](t){return this.color&&this.colorModel.equal(t,this.color)}
  method [_] (line 1) | [_](t){this[ot]=t,this[st].forEach(r=>r.update(t))}
  method [R] (line 1) | [R](t){this[et]=t,f(this,"color-changed",{value:t})}
  method colorModel (line 1) | get colorModel(){return ht}
  method colorModel (line 1) | get colorModel(){return mt}
  method colorModel (line 1) | get colorModel(){return ft}
  method constructor (line 1) | constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" ari...
  method update (line 1) | update(t){this.hsva=t;let r=v({...t,a:0}),o=v({...t,a:1}),s=t.a*100;this...
  method getMove (line 1) | getMove(t,r){return{a:r?c(this.hsva.a+t.x):t.x}}
  method [g] (line 1) | get[g](){return[...super[g],at]}
  method [x] (line 1) | get[x](){return[...super[x],k]}
  method colorModel (line 1) | get colorModel(){return gt}
  function xt (line 1) | function xt({isAutofocused:e,isDisabled:t,isLive:r,isLiveDebounced:o,isL...

FILE: public/js/filament/forms/components/date-time-picker.js
  function f (line 1) | function f(_){var h,D;h=_,D=a&&a.formats;for(var p=(_=h.replace(/(\[[^\]...
  function L (line 1) | function L(m){this.$L=q(m.locale,null,!0),this.parse(m),this.$x=this.$x|...
  function t (line 1) | function t(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function s (line 1) | function s(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}
  function t (line 1) | function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}
  function i (line 1) | function i(u){return u>1&&u<5&&~~(u/10)!=1}
  function e (line 1) | function e(u,r,o,d){var l=u+" ";switch(o){case"s":return r||d?"p\xE1r se...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}
  function e (line 1) | function e(u,r,o){var d=i[o];return Array.isArray(d)&&(d=d[r?0:1]),d.rep...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}
  function i (line 1) | function i(a,u,r,o){var d={s:["m\xF5ne sekundi","m\xF5ni sekund","paar s...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}
  function i (line 1) | function i(a,u,r,o){var d={s:"muutama sekunti",m:"minuutti",mm:"%d minuu...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}
  function i (line 1) | function i(l){return l%10<5&&l%10>1&&~~(l/10)%10!=1}
  function e (line 1) | function e(l,y,f){var _=l+" ";switch(f){case"m":return y?"minuta":"minut...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(f){return f&&typeof f=="object"&&"default"in f?f:{default:f}}
  function o (line 1) | function o(f,_,h){var D,p;return h==="m"?_?"\u043C\u0438\u043D\u0443\u04...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(d){return d&&typeof d=="object"&&"default"in d?d:{default:d}}
  function u (line 1) | function u(d,l,y){var f,_;return y==="m"?l?"\u0445\u0432\u0438\u043B\u04...
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function t (line 1) | function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}
  function n (line 1) | function n(s){this.$L=ce(s.locale,null,!0),this.parse(s),this.$x=this.$x...
  function vi (line 1) | function vi({displayFormat:n,firstDayOfWeek:t,isAutofocused:s,locale:i,s...

FILE: public/js/filament/forms/components/file-upload.js
  method getHeight (line 2) | get getHeight(){return this.height}
  method setHeight (line 2) | set setHeight(e){(this.height===0||e===0)&&(this.height=e)}
  method getWidth (line 2) | get getWidth(){return this.width}
  method setWidth (line 2) | set setWidth(e){(this.width===0||e===0)&&(this.width=e)}
  function Jn (line 2) | function Jn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){v...
  function fr (line 2) | function fr(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=n...
  function aa (line 2) | function aa(e){"@babel/helpers - typeof";return aa=typeof Symbol=="funct...
  function qd (line 2) | function qd(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function er (line 2) | function er(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.e...
  function jd (line 2) | function jd(e,t,i){return t&&er(e.prototype,t),i&&er(e,i),Object.defineP...
  function Xd (line 2) | function Xd(e,t,i){return t=Er(t),t in e?Object.defineProperty(e,t,{valu...
  function gr (line 2) | function gr(e){return Qd(e)||Zd(e)||Kd(e)||Jd()}
  function Qd (line 2) | function Qd(e){if(Array.isArray(e))return na(e)}
  function Zd (line 2) | function Zd(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iter...
  function Kd (line 2) | function Kd(e,t){if(e){if(typeof e=="string")return na(e,t);var i=Object...
  function na (line 2) | function na(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,a=new A...
  function Jd (line 2) | function Jd(){throw new TypeError(`Invalid attempt to spread non-iterabl...
  function eu (line 3) | function eu(e,t){if(typeof e!="object"||e===null)return e;var i=e[Symbol...
  function Er (line 3) | function Er(e){var t=eu(e,"string");return typeof t=="symbol"?t:String(t)}
  function Y (line 3) | function Y(e){return typeof e=="number"&&!du(e)}
  function ta (line 3) | function ta(e){return typeof e>"u"}
  function at (line 3) | function at(e){return aa(e)==="object"&&e!==null}
  function gt (line 3) | function gt(e){if(!at(e))return!1;try{var t=e.constructor,i=t.prototype;...
  function Ee (line 3) | function Ee(e){return typeof e=="function"}
  function wr (line 3) | function wr(e){return Array.from?Array.from(e):hu.call(e)}
  function oe (line 3) | function oe(e,t){return e&&Ee(t)&&(Array.isArray(e)||Y(e.length)?wr(e).f...
  function Tt (line 3) | function Tt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments...
  function He (line 3) | function He(e,t){var i=e.style;oe(t,function(a,n){pu.test(n)&&Y(a)&&(a="...
  function fu (line 3) | function fu(e,t){return e.classList?e.classList.contains(t):e.className....
  function de (line 3) | function de(e,t){if(t){if(Y(e.length)){oe(e,function(a){de(a,t)});return...
  function Pe (line 3) | function Pe(e,t){if(t){if(Y(e.length)){oe(e,function(i){Pe(i,t)});return...
  function Et (line 3) | function Et(e,t,i){if(t){if(Y(e.length)){oe(e,function(a){Et(a,t,i)});re...
  function Ea (line 3) | function Ea(e){return e.replace(gu,"$1-$2").toLowerCase()}
  function ha (line 3) | function ha(e,t){return at(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttrib...
  function Vt (line 3) | function Vt(e,t,i){at(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute(...
  function Eu (line 3) | function Eu(e,t){if(at(e[t]))try{delete e[t]}catch{e[t]=void 0}else if(e...
  function xe (line 3) | function xe(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?argum...
  function we (line 3) | function we(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?argum...
  function It (line 3) | function It(e,t,i){var a;return Ee(Event)&&Ee(CustomEvent)?a=new CustomE...
  function Lr (line 3) | function Lr(e){var t=e.getBoundingClientRect();return{left:t.left+(windo...
  function mr (line 3) | function mr(e){var t=e.match(Tu);return t!==null&&(t[1]!==ia.protocol||t...
  function pr (line 3) | function pr(e){var t="timestamp=".concat(new Date().getTime());return e+...
  function Nt (line 3) | function Nt(e){var t=e.rotate,i=e.scaleX,a=e.scaleY,n=e.translateX,r=e.t...
  function Iu (line 3) | function Iu(e){var t=fr({},e),i=0;return oe(e,function(a,n){delete t[n],...
  function hi (line 3) | function hi(e,t){var i=e.pageX,a=e.pageY,n={endX:i,endY:a};return t?n:fr...
  function bu (line 3) | function bu(e){var t=0,i=0,a=0;return oe(e,function(n){var r=n.startX,o=...
  function We (line 3) | function We(e){var t=e.aspectRatio,i=e.height,a=e.width,n=arguments.leng...
  function _u (line 3) | function _u(e){var t=e.width,i=e.height,a=e.degree;if(a=Math.abs(a)%180,...
  function Ru (line 3) | function Ru(e,t,i,a){var n=t.aspectRatio,r=t.naturalWidth,o=t.naturalHei...
  function yu (line 3) | function yu(e,t,i){var a="";i+=t;for(var n=t;n<i;n+=1)a+=Mr(e.getUint8(n...
  function wu (line 3) | function wu(e){var t=e.replace(Su,""),i=atob(t),a=new ArrayBuffer(i.leng...
  function vu (line 3) | function vu(e,t){for(var i=[],a=8192,n=new Uint8Array(e);n.length>0;)i.p...
  function Au (line 3) | function Au(e){var t=new DataView(e),i;try{var a,n,r;if(t.getUint8(0)===...
  function Lu (line 3) | function Lu(e){var t=0,i=1,a=1;switch(e){case 2:i=-1;break;case 3:t=-180...
  function e (line 3) | function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[...
  function o (line 40) | function o(d,h,m){let p=h[d]/255,f=h[d+1]/255,g=h[d+2]/255,b=h[d+3]/255,...
  function s (line 40) | function s(d){return self.JSON.stringify(d||[])===l}
  function u (line 40) | function u(d,h){if(!h||s(h))return d;let m=d.data,p=m.length,f=h[0],g=h[...
  function c (line 40) | function c(d,h){let{mode:m="contain",upscale:p=!1,width:f,height:g,matri...
  method constructor (line 40) | constructor(t,i){this.mediaEl=t,this.audioElems=i,this.onplayhead=!1,thi...
  method registerListeners (line 40) | registerListeners(){this.mediaEl.addEventListener("timeupdate",this.time...
  method play (line 40) | play(){this.mediaEl.paused?this.mediaEl.play():this.mediaEl.pause(),this...
  method timeUpdate (line 40) | timeUpdate(){let t=this.mediaEl.currentTime/this.duration*100;this.audio...
  method moveplayhead (line 40) | moveplayhead(t){let i=t.clientX-this.getPosition(this.audioElems.timelin...
  method timelineClicked (line 40) | timelineClicked(t){this.moveplayhead(t),this.mediaEl.currentTime=this.du...
  method mouseDown (line 40) | mouseDown(){this.onplayhead=!0,window.addEventListener("mousemove",this....
  method mouseUp (line 40) | mouseUp(t){window.removeEventListener("mousemove",this.moveplayheadFn,!0...
  method clickPercent (line 40) | clickPercent(t){return(t.clientX-this.getPosition(this.audioElems.timeli...
  method getPosition (line 40) | getPosition(t){return t.getBoundingClientRect().left}
  function Jm (line 40) | function Jm({acceptedFileTypes:e,imageEditorEmptyFillColor:t,imageEditor...

FILE: public/js/filament/forms/components/key-value.js
  function r (line 1) | function r({state:i}){return{state:i,rows:[],shouldUpdateRows:!0,init:fu...

FILE: public/js/filament/forms/components/markdown-editor.js
  function D (line 1) | function D(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}
  function j (line 1) | function j(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firs...
  function V (line 1) | function V(e,t){return j(e).appendChild(t)}
  function x (line 1) | function x(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n...
  function K (line 1) | function K(e,t,n,r){var i=x(e,t,n,r);return i.setAttribute("role","prese...
  function I (line 1) | function I(e,t){if(t.nodeType==3&&(t=t.parentNode),e.contains)return e.c...
  function B (line 1) | function B(e){var t=e.ownerDocument||e,n;try{n=e.activeElement}catch{n=t...
  function le (line 1) | function le(e,t){var n=e.className;D(t).test(n)||(e.className+=(n?" ":""...
  function xe (line 1) | function xe(e,t){for(var n=e.split(" "),r=0;r<n.length;r++)n[r]&&!D(n[r]...
  function L (line 1) | function L(e){return e.display.wrapper.ownerDocument}
  function de (line 1) | function de(e){return ze(e.display.wrapper)}
  function ze (line 1) | function ze(e){return e.getRootNode?e.getRootNode():e.ownerDocument}
  function pe (line 1) | function pe(e){return L(e).defaultView}
  function Ee (line 1) | function Ee(e){var t=Array.prototype.slice.call(arguments,1);return func...
  function ge (line 1) | function ge(e,t,n){t||(t={});for(var r in e)e.hasOwnProperty(r)&&(n!==!1...
  function Oe (line 1) | function Oe(e,t,n,r,i){t==null&&(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.l...
  function Se (line 1) | function Se(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}
  function Ge (line 1) | function Ge(e,t,n){for(var r=0,i=0;;){var a=e.indexOf("	",r);a==-1&&(a=e...
  function G (line 1) | function G(e){for(;U.length<=e;)U.push(ce(U)+" ");return U[e]}
  function ce (line 1) | function ce(e){return e[e.length-1]}
  function Be (line 1) | function Be(e,t){for(var n=[],r=0;r<e.length;r++)n[r]=t(e[r],r);return n}
  function te (line 1) | function te(e,t,n){for(var r=0,i=n(t);r<e.length&&n(e[r])<=i;)r++;e.spli...
  function fe (line 1) | function fe(){}
  function oe (line 1) | function oe(e,t){var n;return Object.create?n=Object.create(e):(fe.proto...
  function we (line 1) | function we(e){return/\w/.test(e)||e>"\x80"&&(e.toUpperCase()!=e.toLower...
  function Me (line 1) | function Me(e,t){return t?t.source.indexOf("\\w")>-1&&we(e)?!0:t.test(e)...
  function Le (line 1) | function Le(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;retu...
  function W (line 1) | function W(e){return e.charCodeAt(0)>=768&&$.test(e)}
  function se (line 1) | function se(e,t,n){for(;(n<0?t>0:t<e.length)&&W(e.charAt(t));)t+=n;retur...
  function De (line 1) | function De(e,t,n){for(var r=t>n?-1:1;;){if(t==n)return t;var i=(t+n)/2,...
  function nt (line 1) | function nt(e,t,n,r){if(!e)return r(t,n,"ltr",0);for(var i=!1,a=0;a<e.le...
  function Pt (line 1) | function Pt(e,t,n){var r;dt=null;for(var i=0;i<e.length;++i){var a=e[i];...
  function n (line 1) | function n(m){return m<=247?e.charAt(m):1424<=m&&m<=1524?"R":1536<=m&&m<...
  function f (line 1) | function f(m,A,P){this.level=m,this.from=A,this.to=P}
  function Pe (line 1) | function Pe(e,t){var n=e.order;return n==null&&(n=e.order=It(e.text,t)),n}
  function nr (line 1) | function nr(e,t){return e._handlers&&e._handlers[t]||xt}
  function _t (line 1) | function _t(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1...
  function it (line 1) | function it(e,t){var n=nr(e,t);if(n.length)for(var r=Array.prototype.sli...
  function ot (line 1) | function ot(e,t,n){return typeof t=="string"&&(t={type:t,preventDefault:...
  function Ht (line 1) | function Ht(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(va...
  function Ft (line 1) | function Ft(e,t){return nr(e,t).length>0}
  function Wt (line 1) | function Wt(e){e.prototype.on=function(t,n){Fe(this,t,n)},e.prototype.of...
  function kt (line 1) | function kt(e){e.preventDefault?e.preventDefault():e.returnValue=!1}
  function Hr (line 1) | function Hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}
  function Ct (line 1) | function Ct(e){return e.defaultPrevented!=null?e.defaultPrevented:e.retu...
  function dr (line 1) | function dr(e){kt(e),Hr(e)}
  function yn (line 1) | function yn(e){return e.target||e.srcElement}
  function Ut (line 1) | function Ut(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?...
  function ei (line 1) | function ei(e){if(Br==null){var t=x("span","\u200B");V(e,x("span",[t,doc...
  function pr (line 1) | function pr(e){if(xn!=null)return xn;var t=V(e,document.createTextNode("...
  function to (line 4) | function to(e){if($t!=null)return $t;var t=V(e,x("span","x")),n=t.getBou...
  function Gt (line 4) | function Gt(e,t){arguments.length>2&&(t.dependencies=Array.prototype.sli...
  function Cr (line 4) | function Cr(e,t){Kt[e]=t}
  function Ur (line 4) | function Ur(e){if(typeof e=="string"&&Kt.hasOwnProperty(e))e=Kt[e];else ...
  function $r (line 4) | function $r(e,t){t=Ur(t);var n=Wr[t.name];if(!n)return $r(e,"text/plain"...
  function Kr (line 4) | function Kr(e,t){var n=gr.hasOwnProperty(e)?gr[e]:gr[e]={};ge(t,n)}
  function Vt (line 4) | function Vt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t)...
  function _n (line 4) | function _n(e,t){for(var n;e.innerMode&&(n=e.innerMode(t),!(!n||n.mode==...
  function Gr (line 4) | function Gr(e,t,n){return e.startState?e.startState(t,n):!0}
  function Ae (line 4) | function Ae(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is ...
  function ir (line 4) | function ir(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,funct...
  function kn (line 4) | function kn(e,t,n){var r=[];return e.iter(t,n,function(i){r.push(i.text)...
  function jt (line 4) | function jt(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height...
  function _ (line 4) | function _(e){if(e.parent==null)return null;for(var t=e.parent,n=Se(t.li...
  function O (line 4) | function O(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){...
  function ae (line 4) | function ae(e,t){return t>=e.first&&t<e.first+e.size}
  function he (line 4) | function he(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}
  function ne (line 4) | function ne(e,t,n){if(n===void 0&&(n=null),!(this instanceof ne))return ...
  function ye (line 4) | function ye(e,t){return e.line-t.line||e.ch-t.ch}
  function Xe (line 4) | function Xe(e,t){return e.sticky==t.sticky&&ye(e,t)==0}
  function pt (line 4) | function pt(e){return ne(e.line,e.ch)}
  function Et (line 4) | function Et(e,t){return ye(e,t)<0?t:e}
  function Zr (line 4) | function Zr(e,t){return ye(e,t)<0?e:t}
  function ua (line 4) | function ua(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}
  function Re (line 4) | function Re(e,t){if(t.line<e.first)return ne(e.first,0);var n=e.first+e....
  function Sc (line 4) | function Sc(e,t){var n=e.ch;return n==null||n>t?ne(e.line,t):n<0?ne(e.li...
  function ca (line 4) | function ca(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=Re(e,t[r]);return n}
  function fa (line 4) | function fa(e,t,n,r){var i=[e.state.modeGen],a={};va(e,t.text,e.doc.mode...
  function da (line 4) | function da(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=wn(...
  function wn (line 4) | function wn(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return ...
  function ro (line 4) | function ro(e,t,n,r){var i=e.doc.mode,a=new at(t,e.options.tabSize,n);fo...
  function pa (line 4) | function pa(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){va...
  function no (line 4) | function no(e,t,n,r){for(var i=0;i<10;i++){r&&(r[0]=_n(e,n).mode);var a=...
  function ga (line 4) | function ga(e,t,n,r){var i=e.doc,a=i.mode,l;t=Re(i,t);var u=Ae(i,t.line)...
  function ma (line 4) | function ma(e,t){if(e)for(;;){var n=e.match(/(?:^|\s+)line-(background-)...
  function va (line 4) | function va(e,t,n,r,i,a,l){var u=n.flattenSpans;u==null&&(u=e.options.fl...
  function Tc (line 4) | function Tc(e,t,n){for(var r,i,a=e.doc,l=n?-1:t-(e.doc.mode.innerMode?1e...
  function Lc (line 4) | function Lc(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highli...
  function Cc (line 4) | function Cc(){ba=!0}
  function Ec (line 4) | function Ec(){or=!0}
  function ni (line 4) | function ni(e,t,n){this.marker=e,this.from=t,this.to=n}
  function Sn (line 4) | function Sn(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker...
  function zc (line 4) | function zc(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n||(n=[])).push(...
  function Mc (line 4) | function Mc(e,t,n){var r=n&&window.WeakSet&&(n.markedSpans||(n.markedSpa...
  function Ac (line 4) | function Ac(e,t,n){var r;if(e)for(var i=0;i<e.length;++i){var a=e[i],l=a...
  function Dc (line 4) | function Dc(e,t,n){var r;if(e)for(var i=0;i<e.length;++i){var a=e[i],l=a...
  function io (line 4) | function io(e,t){if(t.full)return null;var n=ae(e,t.from.line)&&Ae(e,t.f...
  function ya (line 4) | function ya(e){for(var t=0;t<e.length;++t){var n=e[t];n.from!=null&&n.fr...
  function qc (line 4) | function qc(e,t,n){var r=null;if(e.iter(t.line,n.line+1,function(Y){if(Y...
  function xa (line 4) | function xa(e){var t=e.markedSpans;if(t){for(var n=0;n<t.length;++n)t[n]...
  function _a (line 4) | function _a(e,t){if(t){for(var n=0;n<t.length;++n)t[n].marker.attachLine...
  function ii (line 4) | function ii(e){return e.inclusiveLeft?-1:0}
  function oi (line 4) | function oi(e){return e.inclusiveRight?1:0}
  function oo (line 4) | function oo(e,t){var n=e.lines.length-t.lines.length;if(n!=0)return n;va...
  function ka (line 4) | function ka(e,t){var n=or&&e.markedSpans,r;if(n)for(var i=void 0,a=0;a<n...
  function wa (line 4) | function wa(e){return ka(e,!0)}
  function ai (line 4) | function ai(e){return ka(e,!1)}
  function Ic (line 4) | function Ic(e,t){var n=or&&e.markedSpans,r;if(n)for(var i=0;i<n.length;+...
  function Sa (line 4) | function Sa(e,t,n,r,i){var a=Ae(e,t),l=or&&a.markedSpans;if(l)for(var u=...
  function Zt (line 4) | function Zt(e){for(var t;t=wa(e);)e=t.find(-1,!0).line;return e}
  function Fc (line 4) | function Fc(e){for(var t;t=ai(e);)e=t.find(1,!0).line;return e}
  function Nc (line 4) | function Nc(e){for(var t,n;t=ai(e);)e=t.find(1,!0).line,(n||(n=[])).push...
  function ao (line 4) | function ao(e,t){var n=Ae(e,t),r=Zt(n);return n==r?t:_(r)}
  function Ta (line 4) | function Ta(e,t){if(t>e.lastLine())return t;var n=Ae(e,t),r;if(!mr(e,n))...
  function mr (line 4) | function mr(e,t){var n=or&&t.markedSpans;if(n){for(var r=void 0,i=0;i<n....
  function lo (line 4) | function lo(e,t,n){if(n.to==null){var r=n.marker.find(1,!0);return lo(e,...
  function ar (line 4) | function ar(e){e=Zt(e);for(var t=0,n=e.parent,r=0;r<n.lines.length;++r){...
  function li (line 4) | function li(e){if(e.height==0)return 0;for(var t=e.text.length,n,r=e;n=w...
  function so (line 4) | function so(e){var t=e.display,n=e.doc;t.maxLine=Ae(n,n.first),t.maxLine...
  function Oc (line 4) | function Oc(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles...
  function Pc (line 4) | function Pc(e){e.parent=null,xa(e)}
  function La (line 4) | function La(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass...
  function Ca (line 4) | function Ca(e,t){var n=K("span",null,null,g?"padding-right: .1px":null),...
  function Hc (line 4) | function Hc(e){var t=x("span","\u2022","cm-invalidchar");return t.title=...
  function Bc (line 4) | function Bc(e,t,n,r,i,a,l){if(t){var u=e.splitSpaces?Wc(t,e.trailingSpac...
  function Wc (line 5) | function Wc(e,t){if(e.length>1&&!/  /.test(e))return e;for(var n=t,r="",...
  function Uc (line 5) | function Uc(e,t){return function(n,r,i,a,l,u,f){i=i?i+" cm-force-border"...
  function Ea (line 5) | function Ea(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,...
  function $c (line 5) | function $c(e,t,n){var r=e.markedSpans,i=e.text,a=0;if(!r){for(var l=1;l...
  function za (line 5) | function za(e,t,n){this.line=t,this.rest=Nc(t),this.size=this.rest?_(ce(...
  function si (line 5) | function si(e,t,n){for(var r=[],i,a=t;a<n;a=i){var l=new za(e.doc,Ae(e.d...
  function Kc (line 5) | function Kc(e){Yr?Yr.ops.push(e):e.ownsGroup=Yr={ops:[e],delayedCallback...
  function Gc (line 5) | function Gc(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n]....
  function Zc (line 5) | function Zc(e,t){var n=e.ownsGroup;if(n)try{Gc(n)}finally{Yr=null,t(n)}}
  function ht (line 5) | function ht(e,t){var n=nr(e,t);if(n.length){var r=Array.prototype.slice....
  function Xc (line 5) | function Xc(){var e=Tn;Tn=null;for(var t=0;t<e.length;++t)e[t]()}
  function Ma (line 5) | function Ma(e,t,n,r){for(var i=0;i<t.changes.length;i++){var a=t.changes...
  function Ln (line 5) | function Ln(e){return e.node==e.text&&(e.node=x("div",null,null,"positio...
  function Yc (line 5) | function Yc(e,t){var n=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.li...
  function Aa (line 5) | function Aa(e,t){var n=e.display.externalMeasured;return n&&n.line==t.li...
  function Qc (line 5) | function Qc(e,t){var n=t.text.className,r=Aa(e,t);t.text==t.node&&(t.nod...
  function uo (line 5) | function uo(e,t){Yc(e,t),t.line.wrapClass?Ln(t).className=t.line.wrapCla...
  function Da (line 5) | function Da(e,t,n,r){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter...
  function Vc (line 5) | function Vc(e,t,n){t.alignable&&(t.alignable=null);for(var r=D("CodeMirr...
  function Jc (line 5) | function Jc(e,t,n,r){var i=Aa(e,t);return t.text=t.node=i.pre,i.bgClass&...
  function qa (line 5) | function qa(e,t,n){if(Ia(e,t.line,t,n,!0),t.rest)for(var r=0;r<t.rest.le...
  function Ia (line 5) | function Ia(e,t,n,r,i){if(t.widgets)for(var a=Ln(n),l=0,u=t.widgets;l<u....
  function ef (line 5) | function ef(e,t,n,r){if(e.noHScroll){(n.alignable||(n.alignable=[])).pus...
  function Cn (line 5) | function Cn(e){if(e.height!=null)return e.height;var t=e.doc.cm;if(!t)re...
  function lr (line 5) | function lr(e,t){for(var n=yn(t);n!=e.wrapper;n=n.parentNode)if(!n||n.no...
  function ui (line 5) | function ui(e){return e.lineSpace.offsetTop}
  function co (line 5) | function co(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}
  function Fa (line 5) | function Fa(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=V(e.mea...
  function er (line 5) | function er(e){return je-e.display.nativeBarWidth}
  function Er (line 5) | function Er(e){return e.display.scroller.clientWidth-er(e)-e.display.bar...
  function fo (line 5) | function fo(e){return e.display.scroller.clientHeight-er(e)-e.display.ba...
  function tf (line 5) | function tf(e,t,n){var r=e.options.lineWrapping,i=r&&Er(e);if(!t.measure...
  function Na (line 5) | function Na(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure...
  function rf (line 5) | function rf(e,t){t=Zt(t);var n=_(t),r=e.display.externalMeasured=new za(...
  function Oa (line 5) | function Oa(e,t,n,r){return tr(e,Qr(e,t),n,r)}
  function po (line 5) | function po(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.d...
  function Qr (line 5) | function Qr(e,t){var n=_(t),r=po(e,n);r&&!r.text?r=null:r&&r.changes&&(M...
  function tr (line 5) | function tr(e,t,n,r,i){t.before&&(n=-1);var a=n+(r||""),l;return t.cache...
  function ja (line 5) | function ja(e,t,n){for(var r,i,a,l,u,f,m=0;m<e.length;m+=3)if(u=e[m],f=e...
  function nf (line 5) | function nf(e,t){var n=Pa;if(t=="left")for(var r=0;r<e.length&&(n=e[r])....
  function of (line 5) | function of(e,t,n,r){var i=ja(t.map,n,r),a=i.node,l=i.start,u=i.end,f=i....
  function af (line 5) | function af(e,t){if(!window.screen||screen.logicalXDPI==null||screen.log...
  function Ra (line 5) | function Ra(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,...
  function Ha (line 5) | function Ha(e){e.display.externalMeasure=null,j(e.display.lineMeasure);f...
  function En (line 5) | function En(e){Ha(e),e.display.cachedCharWidth=e.display.cachedTextHeigh...
  function Ba (line 5) | function Ba(e){return S&&R?-(e.body.getBoundingClientRect().left-parseIn...
  function Wa (line 5) | function Wa(e){return S&&R?-(e.body.getBoundingClientRect().top-parseInt...
  function ho (line 5) | function ho(e){var t=Zt(e),n=t.widgets,r=0;if(n)for(var i=0;i<n.length;+...
  function ci (line 5) | function ci(e,t,n,r,i){if(!i){var a=ho(t);n.top+=a,n.bottom+=a}if(r=="li...
  function Ua (line 5) | function Ua(e,t,n){if(n=="div")return t;var r=t.left,i=t.top;if(n=="page...
  function fi (line 5) | function fi(e,t,n,r,i){return r||(r=Ae(e.doc,t.line)),ci(e,r,Oa(e,r,t.ch...
  function Xt (line 5) | function Xt(e,t,n,r,i,a){r=r||Ae(e.doc,t.line),i||(i=Qr(e,r));function l...
  function $a (line 5) | function $a(e,t){var n=0;t=Re(e.doc,t),e.options.lineWrapping||(n=Jr(e.d...
  function go (line 5) | function go(e,t,n,r,i){var a=ne(e,t,n);return a.xRel=i,r&&(a.outside=r),a}
  function mo (line 5) | function mo(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,n<0)return go(...
  function Ka (line 5) | function Ka(e,t,n,r){r-=ho(t);var i=t.text.length,a=De(function(l){retur...
  function Ga (line 5) | function Ga(e,t,n,r){n||(n=Qr(e,t));var i=ci(e,t,tr(e,n,r),"line").top;r...
  function vo (line 5) | function vo(e,t,n,r){return e.bottom<=n?!1:e.top>n?!0:(r?e.left:e.right)>t}
  function lf (line 5) | function lf(e,t,n,r,i){i-=ar(t);var a=Qr(e,t),l=ho(t),u=0,f=t.text.lengt...
  function sf (line 5) | function sf(e,t,n,r,i,a,l){var u=De(function(P){var J=i[P],Y=J.level!=1;...
  function uf (line 5) | function uf(e,t,n,r,i,a,l){var u=Ka(e,t,r,l),f=u.begin,m=u.end;/\s/.test...
  function Vr (line 5) | function Vr(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(...
  function Jr (line 5) | function Jr(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t...
  function bo (line 5) | function bo(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t....
  function yo (line 5) | function yo(e){return e.scroller.getBoundingClientRect().left-e.sizer.ge...
  function Za (line 5) | function Za(e){var t=Vr(e.display),n=e.options.lineWrapping,r=n&&Math.ma...
  function xo (line 5) | function xo(e){var t=e.doc,n=Za(e);t.iter(function(r){var i=n(r);i!=r.he...
  function Mr (line 5) | function Mr(e,t,n,r){var i=e.display;if(!n&&yn(t).getAttribute("cm-not-c...
  function Ar (line 5) | function Ar(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))ret...
  function zt (line 5) | function zt(e,t,n,r){t==null&&(t=e.doc.first),n==null&&(n=e.doc.first+e....
  function vr (line 5) | function vr(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.ex...
  function br (line 5) | function br(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display...
  function di (line 5) | function di(e,t,n,r){var i=Ar(e,t),a,l=e.display.view;if(!or||n==e.doc.f...
  function cf (line 5) | function cf(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<...
  function Xa (line 5) | function Xa(e){for(var t=e.display.view,n=0,r=0;r<t.length;r++){var i=t[...
  function zn (line 5) | function zn(e){e.display.input.showSelection(e.display.input.prepareSele...
  function Ya (line 5) | function Ya(e,t){t===void 0&&(t=!0);var n=e.doc,r={},i=r.cursors=documen...
  function _o (line 5) | function _o(e,t,n){var r=Xt(e,t,"div",null,null,!e.options.singleCursorH...
  function pi (line 5) | function pi(e,t){return e.top-t.top||e.left-t.left}
  function ff (line 5) | function ff(e,t,n){var r=e.display,i=e.doc,a=document.createDocumentFrag...
  function ko (line 7) | function ko(e){if(e.state.focused){var t=e.display;clearInterval(t.blink...
  function Qa (line 7) | function Qa(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||S...
  function wo (line 7) | function wo(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.stat...
  function So (line 7) | function So(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.st...
  function en (line 7) | function en(e,t){e.state.delayingBlurEvent||(e.state.focused&&(it(e,"blu...
  function hi (line 7) | function hi(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=Math.max(0,t....
  function Va (line 7) | function Va(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var n=e....
  function gi (line 7) | function gi(e,t,n){var r=n&&n.top!=null?Math.max(0,n.top):e.scroller.scr...
  function df (line 7) | function df(e,t){if(!ot(e,"scrollCursorIntoView")){var n=e.display,r=n.s...
  function pf (line 10) | function pf(e,t,n,r){r==null&&(r=0);var i;!e.options.lineWrapping&&t==n&...
  function hf (line 10) | function hf(e,t){var n=To(e,t);n.scrollTop!=null&&An(e,n.scrollTop),n.sc...
  function To (line 10) | function To(e,t){var n=e.display,r=Vr(e.display);t.top<0&&(t.top=0);var ...
  function Lo (line 10) | function Lo(e,t){t!=null&&(mi(e),e.curOp.scrollTop=(e.curOp.scrollTop==n...
  function tn (line 10) | function tn(e){mi(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:...
  function Mn (line 10) | function Mn(e,t,n){(t!=null||n!=null)&&mi(e),t!=null&&(e.curOp.scrollLef...
  function gf (line 10) | function gf(e,t){mi(e),e.curOp.scrollToPos=t}
  function mi (line 10) | function mi(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;...
  function Ja (line 10) | function Ja(e,t,n,r){var i=To(e,{left:Math.min(t.left,n.left),top:Math.m...
  function An (line 10) | function An(e,t){Math.abs(e.doc.scrollTop-t)<2||(v||Eo(e,{top:t}),el(e,t...
  function el (line 10) | function el(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight...
  function Dr (line 10) | function Dr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWi...
  function Dn (line 10) | function Dn(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.do...
  function r (line 10) | function r(){var i=e.getBoundingClientRect(),a=n=="vert"?document.elemen...
  function rn (line 10) | function rn(e,t){t||(t=Dn(e));var n=e.display.barWidth,r=e.display.barHe...
  function tl (line 10) | function tl(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style....
  function nl (line 10) | function nl(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.dis...
  function Ir (line 10) | function Ir(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,for...
  function Fr (line 10) | function Fr(e){var t=e.curOp;t&&Zc(t,function(n){for(var r=0;r<n.ops.len...
  function vf (line 10) | function vf(e){for(var t=e.ops,n=0;n<t.length;n++)bf(t[n]);for(var r=0;r...
  function bf (line 10) | function bf(e){var t=e.cm,n=t.display;Sf(t),e.updateMaxLine&&so(t),e.mus...
  function yf (line 10) | function yf(e){e.updatedDisplay=e.mustUpdate&&Co(e.cm,e.update)}
  function xf (line 10) | function xf(e){var t=e.cm,n=t.display;e.updatedDisplay&&hi(t),e.barMeasu...
  function _f (line 10) | function _f(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style....
  function kf (line 10) | function kf(e){var t=e.cm,n=t.display,r=t.doc;if(e.updatedDisplay&&il(t,...
  function Nt (line 10) | function Nt(e,t){if(e.curOp)return t();Ir(e);try{return t()}finally{Fr(e)}}
  function gt (line 10) | function gt(e,t){return function(){if(e.curOp)return t.apply(e,arguments...
  function Tt (line 10) | function Tt(e){return function(){if(this.curOp)return e.apply(this,argum...
  function mt (line 10) | function mt(e){return function(){var t=this.cm;if(!t||t.curOp)return e.a...
  function In (line 10) | function In(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highl...
  function wf (line 10) | function wf(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){...
  function Sf (line 10) | function Sf(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWi...
  function Tf (line 10) | function Tf(e){if(e.hasFocus())return null;var t=B(de(e));if(!t||!I(e.di...
  function Lf (line 10) | function Lf(e){if(!(!e||!e.activeElt||e.activeElt==B(ze(e.activeElt)))&&...
  function Co (line 10) | function Co(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return br(e...
  function il (line 10) | function il(e,t){for(var n=t.viewport,r=!0;;r=!1){if(!r||!e.options.line...
  function Eo (line 10) | function Eo(e,t){var n=new vi(e,t);if(Co(e,n)){hi(e),il(e,n);var r=Dn(e)...
  function Cf (line 10) | function Cf(e,t,n){var r=e.display,i=e.options.lineNumbers,a=r.lineDiv,l...
  function zo (line 10) | function zo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"p...
  function Mo (line 10) | function Mo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.disp...
  function ol (line 10) | function ol(e){var t=e.display,n=t.view;if(!(!t.alignWidgets&&(!t.gutter...
  function al (line 10) | function al(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=he(e.opt...
  function Ao (line 10) | function Ao(e,t){for(var n=[],r=!1,i=0;i<e.length;i++){var a=e[i],l=null...
  function ll (line 10) | function ll(e){var t=e.gutters,n=e.gutterSpecs;j(t),e.lineGutter=null;fo...
  function Fn (line 10) | function Fn(e){ll(e.display),zt(e),ol(e)}
  function Ef (line 10) | function Ef(e,t,n,r){var i=this;this.input=n,i.scrollbarFiller=x("div",n...
  function sl (line 10) | function sl(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return t==null&&e.det...
  function zf (line 10) | function zf(e){var t=sl(e);return t.x*=sr,t.y*=sr,t}
  function ul (line 10) | function ul(e,t){S&&c==102&&(e.display.chromeScrollHack==null?e.display....
  function Yt (line 10) | function Yt(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort(f...
  function yr (line 10) | function yr(e,t){return new Rt([new Ye(e,t||e)],0)}
  function xr (line 10) | function xr(e){return e.text?ne(e.from.line+e.text.length-1,ce(e.text).l...
  function cl (line 10) | function cl(e,t){if(ye(e,t.from)<0)return e;if(ye(e,t.to)<=0)return xr(t...
  function Do (line 10) | function Do(e,t){for(var n=[],r=0;r<e.sel.ranges.length;r++){var i=e.sel...
  function fl (line 10) | function fl(e,t,n){return e.line==t.line?ne(n.line,e.ch-t.ch+n.ch):ne(n....
  function Mf (line 10) | function Mf(e,t,n){for(var r=[],i=ne(e.first,0),a=i,l=0;l<t.length;l++){...
  function qo (line 10) | function qo(e){e.doc.mode=$r(e.options,e.doc.modeOption),Nn(e)}
  function Nn (line 10) | function Nn(e){e.doc.iter(function(t){t.stateAfter&&(t.stateAfter=null),...
  function dl (line 10) | function dl(e,t){return t.from.ch==0&&t.to.ch==0&&ce(t.text)==""&&(!e.cm...
  function Io (line 10) | function Io(e,t,n,r){function i(_e){return n?n[_e]:null}function a(_e,be...
  function _r (line 10) | function _r(e,t,n){function r(i,a,l){if(i.linked)for(var u=0;u<i.linked....
  function pl (line 10) | function pl(e,t){if(t.cm)throw new Error("This document is already in us...
  function hl (line 10) | function hl(e){(e.doc.direction=="rtl"?le:Q)(e.display.lineDiv,"CodeMirr...
  function Af (line 10) | function Af(e){Nt(e,function(){hl(e),zt(e)})}
  function yi (line 10) | function yi(e){this.done=[],this.undone=[],this.undoDepth=e?e.undoDepth:...
  function Fo (line 10) | function Fo(e,t){var n={from:pt(t.from),to:xr(t),text:ir(e,t.from,t.to)}...
  function gl (line 10) | function gl(e){for(;e.length;){var t=ce(e);if(t.ranges)e.pop();else break}}
  function Df (line 10) | function Df(e,t){if(t)return gl(e.done),ce(e.done);if(e.done.length&&!ce...
  function ml (line 10) | function ml(e,t,n,r){var i=e.history;i.undone.length=0;var a=+new Date,l...
  function qf (line 10) | function qf(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.l...
  function If (line 10) | function If(e,t,n,r){var i=e.history,a=r&&r.origin;n==i.lastSelOp||a&&i....
  function xi (line 10) | function xi(e,t){var n=ce(t);n&&n.ranges&&n.equals(e)||t.push(e)}
  function vl (line 10) | function vl(e,t,n,r){var i=t["spans_"+e.id],a=0;e.iter(Math.max(e.first,...
  function Ff (line 10) | function Ff(e){if(!e)return null;for(var t,n=0;n<e.length;++n)e[n].marke...
  function Nf (line 10) | function Nf(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=[],i...
  function bl (line 10) | function bl(e,t){var n=Nf(e,t),r=io(e,t);if(!n)return r;if(!r)return n;f...
  function nn (line 10) | function nn(e,t,n){for(var r=[],i=0;i<e.length;++i){var a=e[i];if(a.rang...
  function No (line 10) | function No(e,t,n,r){if(r){var i=e.anchor;if(n){var a=ye(t,i)<0;a!=ye(n,...
  function _i (line 10) | function _i(e,t,n,r,i){i==null&&(i=e.cm&&(e.cm.display.shift||e.extend))...
  function yl (line 10) | function yl(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),a...
  function Oo (line 10) | function Oo(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,wt(e,Yt(e.cm,i,e...
  function xl (line 10) | function xl(e,t,n,r){wt(e,yr(t,n),r)}
  function Of (line 10) | function Of(e,t,n){var r={ranges:t.ranges,update:function(i){this.ranges...
  function _l (line 10) | function _l(e,t,n){var r=e.history.done,i=ce(r);i&&i.ranges?(r[r.length-...
  function wt (line 10) | function wt(e,t,n){ki(e,t,n),If(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}
  function ki (line 10) | function ki(e,t,n){(Ft(e,"beforeSelectionChange")||e.cm&&Ft(e.cm,"before...
  function kl (line 10) | function kl(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput...
  function wl (line 10) | function wl(e){kl(e,Sl(e,e.sel,null,!1))}
  function Sl (line 10) | function Sl(e,t,n,r){for(var i,a=0;a<t.ranges.length;a++){var l=t.ranges...
  function on (line 10) | function on(e,t,n,r,i){var a=Ae(e,t.line);if(a.markedSpans)for(var l=0;l...
  function wi (line 10) | function wi(e,t,n,r,i){var a=r||1,l=on(e,t,n,a,i)||!i&&on(e,t,n,a,!0)||o...
  function Tl (line 10) | function Tl(e,t,n,r){return n<0&&t.ch==0?t.line>e.first?Re(e,ne(t.line-1...
  function Ll (line 10) | function Ll(e){e.setSelection(ne(e.firstLine(),0),ne(e.lastLine()),ke)}
  function Cl (line 10) | function Cl(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,or...
  function an (line 10) | function an(e,t,n){if(e.cm){if(!e.cm.curOp)return gt(e.cm,an)(e,t,n);if(...
  function El (line 10) | function El(e,t){if(!(t.text.length==1&&t.text[0]==""&&ye(t.from,t.to)==...
  function Si (line 10) | function Si(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!n)){for...
  function zl (line 10) | function zl(e,t){if(t!=0&&(e.first+=t,e.sel=new Rt(Be(e.sel.ranges,funct...
  function On (line 10) | function On(e,t,n,r){if(e.cm&&!e.cm.curOp)return gt(e.cm,On)(e,t,n,r);if...
  function Pf (line 10) | function Pf(e,t,n){var r=e.doc,i=e.display,a=t.from,l=t.to,u=!1,f=a.line...
  function ln (line 10) | function ln(e,t,n,r,i){var a;r||(r=n),ye(r,n)<0&&(a=[r,n],n=a[0],r=a[1])...
  function Ml (line 10) | function Ml(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}
  function Al (line 10) | function Al(e,t,n,r){for(var i=0;i<e.length;++i){var a=e[i],l=!0;if(a.ra...
  function Dl (line 10) | function Dl(e,t){var n=t.from.line,r=t.to.line,i=t.text.length-(r-n)-1;A...
  function Pn (line 10) | function Pn(e,t,n,r){var i=t,a=t;return typeof t=="number"?a=Ae(e,ua(e,t...
  function jn (line 10) | function jn(e){this.lines=e,this.parent=null;for(var t=0,n=0;n<e.length;...
  function Rn (line 10) | function Rn(e){this.children=e;for(var t=0,n=0,r=0;r<e.length;++r){var i...
  function ql (line 10) | function ql(e,t,n){ar(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&...
  function jf (line 10) | function jf(e,t,n,r){var i=new Hn(e,n,r),a=e.cm;return a&&i.noHScroll&&(...
  function sn (line 10) | function sn(e,t,n,r,i){if(r&&r.shared)return Rf(e,t,n,r,i);if(e.cm&&!e.c...
  function Rf (line 10) | function Rf(e,t,n,r,i){r=ge(r),r.shared=!1;var a=[sn(e,t,n,r,i)],l=a[0],...
  function Fl (line 10) | function Fl(e){return e.findMarks(ne(e.first,0),e.clipPos(ne(e.lastLine(...
  function Hf (line 10) | function Hf(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),a=e.c...
  function Bf (line 10) | function Bf(e){for(var t=function(r){var i=e[r],a=[i.primary.doc];_r(i.p...
  function Uf (line 11) | function Uf(e){var t=this;if(Ol(t),!(ot(t,e)||lr(t.display,e))){kt(e),s&...
  function $f (line 11) | function $f(e,t){if(s&&(!e.state.draggingText||+new Date-Nl<100)){dr(t);...
  function Kf (line 11) | function Kf(e,t){var n=Mr(e,t);if(n){var r=document.createDocumentFragme...
  function Ol (line 11) | function Ol(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e....
  function Pl (line 11) | function Pl(e){if(document.getElementsByClassName){for(var t=document.ge...
  function Gf (line 11) | function Gf(){jl||(Zf(),jl=!0)}
  function Zf (line 11) | function Zf(){var e;Fe(window,"resize",function(){e==null&&(e=setTimeout...
  function Xf (line 11) | function Xf(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.ca...
  function Yf (line 11) | function Yf(e){var t=e.split(/-(?!$)/);e=t[t.length-1];for(var n,r,i,a,l...
  function Qf (line 11) | function Qf(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n...
  function un (line 11) | function un(e,t,n,r){t=Li(t);var i=t.call?t.call(e,r):t[e];if(i===!1)ret...
  function Rl (line 11) | function Rl(e){var t=typeof e=="string"?e:wr[e.keyCode];return t=="Ctrl"...
  function Hl (line 11) | function Hl(e,t,n){var r=e;return t.altKey&&r!="Alt"&&(e="Alt-"+e),(N?t....
  function Bl (line 11) | function Bl(e,t){if(d&&e.keyCode==34&&e.char)return!1;var n=wr[e.keyCode...
  function Li (line 11) | function Li(e){return typeof e=="string"?ur[e]:e}
  function cn (line 11) | function cn(e,t){for(var n=e.doc.sel.ranges,r=[],i=0;i<n.length;i++){for...
  function Po (line 11) | function Po(e,t,n){var r=se(e.text,t+n,n);return r<0||r>e.text.length?nu...
  function jo (line 11) | function jo(e,t,n){var r=Po(e,t.ch,n);return r==null?null:new ne(t.line,...
  function Ro (line 11) | function Ro(e,t,n,r,i){if(e){t.doc.direction=="rtl"&&(i=-i);var a=Pe(n,t...
  function Vf (line 11) | function Vf(e,t,n,r){var i=Pe(t,e.doc.direction);if(!i)return jo(t,n,r);...
  function Wl (line 12) | function Wl(e,t){var n=Ae(e.doc,t),r=Zt(n);return r!=n&&(t=_(r)),Ro(!0,e...
  function Jf (line 12) | function Jf(e,t){var n=Ae(e.doc,t),r=Fc(n);return r!=n&&(t=_(r)),Ro(!0,e...
  function Ul (line 12) | function Ul(e,t){var n=Wl(e,t.line),r=Ae(e.doc,n.line),i=Pe(r,e.doc.dire...
  function Ci (line 12) | function Ci(e,t,n){if(typeof t=="string"&&(t=$n[t],!t))return!1;e.displa...
  function ed (line 12) | function ed(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=un(t,...
  function Kn (line 12) | function Kn(e,t,n,r){var i=e.state.keySeq;if(i){if(Rl(t))return"handled"...
  function $l (line 12) | function $l(e,t,n,r){var i=ed(e,t,r);return i=="multi"&&(e.state.keySeq=...
  function Kl (line 12) | function Kl(e,t){var n=Bl(t,!0);return n?t.shiftKey&&!e.state.keySeq?Kn(...
  function rd (line 12) | function rd(e,t,n){return Kn(e,"'"+n+"'",t,function(r){return Ci(e,r,!0)})}
  function Gl (line 12) | function Gl(e){var t=this;if(!(e.target&&e.target!=t.display.input.getFi...
  function nd (line 12) | function nd(e){var t=e.display.lineDiv;le(t,"CodeMirror-crosshair");func...
  function Zl (line 12) | function Zl(e){e.keyCode==16&&(this.doc.sel.shift=!1),ot(this,e)}
  function Xl (line 12) | function Xl(e){var t=this;if(!(e.target&&e.target!=t.display.input.getFi...
  function od (line 12) | function od(e,t){var n=+new Date;return Zn&&Zn.compare(n,e,t)?(Gn=Zn=nul...
  function Yl (line 12) | function Yl(e){var t=this,n=t.display;if(!(ot(t,e)||n.activeTouch&&n.inp...
  function ad (line 12) | function ad(e,t,n,r,i){var a="Click";return r=="double"?a="Double"+a:r==...
  function ld (line 12) | function ld(e,t,n){var r=e.getOption("configureMouse"),i=r?r(e,t,n):{};i...
  function sd (line 12) | function sd(e,t,n,r){s?setTimeout(Ee(Qa,e),0):e.curOp.focus=B(de(e));var...
  function ud (line 12) | function ud(e,t,n,r){var i=e.display,a=!1,l=gt(e,function(m){g&&(i.scrol...
  function Ql (line 12) | function Ql(e,t,n){if(n=="char")return new Ye(t,t);if(n=="word")return e...
  function cd (line 12) | function cd(e,t,n,r){s&&wo(e);var i=e.display,a=e.doc;kt(t);var l,u,f=a....
  function fd (line 12) | function fd(e,t){var n=t.anchor,r=t.head,i=Ae(e.doc,n.line);if(ye(n,r)==...
  function Vl (line 12) | function Vl(e,t,n,r){var i,a;if(t.touches)i=t.touches[0].clientX,a=t.tou...
  function Wo (line 12) | function Wo(e,t){return Vl(e,t,"gutterClick",!0)}
  function Jl (line 12) | function Jl(e,t){lr(e.display,t)||dd(e,t)||ot(e,t,"contextmenu")||F||e.d...
  function dd (line 12) | function dd(e,t){return Ft(e,"gutterContextMenu")?Vl(e,t,"gutterContextM...
  function es (line 12) | function es(e){e.display.wrapper.className=e.display.wrapper.className.r...
  function pd (line 12) | function pd(e){var t=e.optionHandlers;function n(r,i,a,l){e.defaults[r]=...
  function hd (line 12) | function hd(e,t,n){var r=n&&n!=fn;if(!t!=!r){var i=e.display.dragFunctio...
  function gd (line 12) | function gd(e){e.options.lineWrapping?(le(e.display.wrapper,"CodeMirror-...
  function tt (line 12) | function tt(e,t){var n=this;if(!(this instanceof tt))return new tt(e,t);...
  function md (line 12) | function md(e){var t=e.display;Fe(t.scroller,"mousedown",gt(e,Yl)),s&&h<...
  function Xn (line 12) | function Xn(e,t,n,r){var i=e.doc,a;n==null&&(n="add"),n=="smart"&&(i.mod...
  function zi (line 12) | function zi(e){Qt=e}
  function $o (line 12) | function $o(e,t,n,r,i){var a=e.doc;e.display.shift=!1,r||(r=a.sel);var l...
  function rs (line 15) | function rs(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");...
  function ns (line 15) | function ns(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))...
  function is (line 15) | function is(e){for(var t=[],n=[],r=0;r<e.doc.sel.ranges.length;r++){var ...
  function Ko (line 15) | function Ko(e,t,n,r){e.setAttribute("autocorrect",n?"on":"off"),e.setAtt...
  function os (line 15) | function os(){var e=x("textarea",null,null,"position: absolute; bottom: ...
  function vd (line 15) | function vd(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constr...
  function Go (line 15) | function Go(e,t,n,r,i){var a=t,l=n,u=Ae(e,t.line),f=i&&e.direction=="rtl...
  function as (line 17) | function as(e,t,n,r){var i=e.doc,a=t.left,l;if(r=="page"){var u=Math.min...
  function a (line 17) | function a(u){for(var f=u.target;f;f=f.parentNode){if(f==i)return!0;if(/...
  function l (line 17) | function l(u){if(!(!a(u)||ot(r,u))){if(r.somethingSelected())zi({lineWis...
  function n (line 19) | function n(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.o...
  function ls (line 19) | function ls(e,t){var n=po(e,t.line);if(!n||n.hidden)return null;var r=Ae...
  function bd (line 19) | function bd(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrappe...
  function dn (line 19) | function dn(e,t){return t&&(e.bad=!0),e}
  function yd (line 19) | function yd(e,t,n,r,i){var a="",l=!1,u=e.doc.lineSeparator(),f=!1;functi...
  function Mi (line 19) | function Mi(e,t,n){var r;if(t==e.display.lineDiv){if(r=e.display.lineDiv...
  function xd (line 19) | function xd(e,t,n){var r=e.text.firstChild,i=!1;if(!t||!I(r,t))return dn...
  function a (line 19) | function a(l){if(!ot(r,l)){if(r.somethingSelected())zi({lineWise:!1,text...
  function n (line 20) | function n(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,n)):(t.polling...
  function J (line 24) | function J(){if(i.selectionStart!=null){var ue=n.somethingSelected(),me=...
  function Y (line 24) | function Y(){if(t.contextMenuPending==Y&&(t.contextMenuPending=!1,t.wrap...
  function _d (line 24) | function _d(e,t){if(t=t?ge(t):{},t.value=e.value,!t.tabindex&&e.tabIndex...
  function kd (line 24) | function kd(e){e.off=_t,e.on=Fe,e.wheelEventPixels=zf,e.Doc=Mt,e.splitLi...
  function b (line 26) | function b(T,s){var h=s.line,g=0,w=0,S=p.exec(T.getLine(h)),c=S[1];do{g+...
  function p (line 26) | function p(h){h.state.placeholder&&(h.state.placeholder.parentNode.remov...
  function v (line 26) | function v(h){p(h);var g=h.state.placeholder=document.createElement("pre...
  function C (line 26) | function C(h){setTimeout(function(){var g=!1;if(h.lineCount()==1){var w=...
  function b (line 26) | function b(h){s(h)&&v(h)}
  function T (line 26) | function T(h){var g=h.getWrapperElement(),w=s(h);g.className=g.className...
  function s (line 26) | function s(h){return h.lineCount()===1&&h.getLine(0)===""}
  function p (line 26) | function p(S){S.state.markedSelection&&S.operation(function(){w(S)})}
  function v (line 26) | function v(S){S.state.markedSelection&&S.state.markedSelection.length&&S...
  function s (line 26) | function s(S,c,d,k){if(T(c,d)!=0)for(var E=S.state.markedSelection,z=S.s...
  function h (line 26) | function h(S){for(var c=S.state.markedSelection,d=0;d<c.length;++d)c[d]....
  function g (line 26) | function g(S){h(S);for(var c=S.listSelections(),d=0;d<c.length;d++)s(S,c...
  function w (line 26) | function w(S){if(!S.somethingSelected())return h(S);if(S.listSelections(...
  function v (line 26) | function v(y){var R=y.flags;return R??(y.ignoreCase?"i":"")+(y.global?"g...
  function C (line 26) | function C(y,R){for(var M=v(y),H=M,Z=0;Z<R.length;Z++)H.indexOf(R.charAt...
  function b (line 26) | function b(y){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(y.source)}
  function T (line 26) | function T(y,R,M){R=C(R,"g");for(var H=M.line,Z=M.ch,ee=y.lastLine();H<=...
  function s (line 26) | function s(y,R,M){if(!b(R))return T(y,R,M);R=C(R,"gm");for(var H,Z=1,ee=...
  function h (line 29) | function h(y,R,M){for(var H,Z=0;Z<=y.length;){R.lastIndex=Z;var ee=R.exe...
  function g (line 29) | function g(y,R,M){R=C(R,"g");for(var H=M.line,Z=M.ch,ee=y.firstLine();H>...
  function w (line 29) | function w(y,R,M){if(!b(R))return g(y,R,M);R=C(R,"gm");for(var H,Z=1,ee=...
  function d (line 32) | function d(y,R,M,H){if(y.length==R.length)return M;for(var Z=0,ee=M+Math...
  function k (line 32) | function k(y,R,M,H){if(!R.length)return null;var Z=H?S:c,ee=Z(R).split(/...
  function E (line 32) | function E(y,R,M,H){if(!R.length)return null;var Z=H?S:c,ee=Z(R).split(/...
  function z (line 32) | function z(y,R,M,H){this.atOccurrence=!1,this.afterEmptyMatch=!1,this.do...
  function p (line 32) | function p(I,B,le,xe,q,L){this.indented=I,this.column=B,this.type=le,thi...
  function v (line 32) | function v(I,B,le,xe){var q=I.indented;return I.context&&I.context.type=...
  function C (line 32) | function C(I){var B=I.context.type;return(B==")"||B=="]"||B=="}")&&(I.in...
  function b (line 32) | function b(I,B,le){if(B.prevToken=="variable"||B.prevToken=="type"||/\S(...
  function T (line 32) | function T(I){for(;;){if(!I||I.type=="top")return!0;if(I.type=="}"&&I.pr...
  function te (line 32) | function te(we,Me){var Le=we.next();if(Oe[Le]){var $=Oe[Le](we,Me);if($!...
  function fe (line 32) | function fe(we){return function(Me,Le){for(var $=!1,W,se=!1;(W=Me.next()...
  function oe (line 32) | function oe(we,Me){for(var Le=!1,$;$=we.next();){if($=="/"&&Le){Me.token...
  function Ue (line 32) | function Ue(we,Me){B.typeFirstDefinitions&&we.eol()&&T(Me.context)&&(Me....
  function s (line 32) | function s(I){for(var B={},le=I.split(" "),xe=0;xe<le.length;++xe)B[le[x...
  function h (line 32) | function h(I,B){return typeof I=="function"?I(B):I.propertyIsEnumerable(B)}
  function E (line 32) | function E(I){return h(d,I)||/.+_t$/.test(I)}
  function z (line 32) | function z(I){return E(I)||h(k,I)}
  function M (line 32) | function M(I,B){if(!B.startOfLine)return!1;for(var le,xe=null;le=I.peek(...
  function H (line 32) | function H(I,B){return B.prevToken=="type"?"type":!1}
  function Z (line 32) | function Z(I){return!I||I.length<2||I[0]!="_"?!1:I[1]=="_"||I[1]!==I[1]....
  function ee (line 32) | function ee(I){return I.eatWhile(/[\w\.']/),"number"}
  function re (line 32) | function re(I,B){if(I.backUp(1),I.match(/^(?:R|u8R|uR|UR|LR)/)){var le=I...
  function N (line 32) | function N(I){var B=/(\w+)::~?(\w+)$/.exec(I);return B&&B[1]==B[2]}
  function F (line 32) | function F(I,B){for(var le;(le=I.next())!=null;)if(le=='"'&&!I.eat('"'))...
  function D (line 32) | function D(I,B){var le=B.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&"),...
  function Q (line 32) | function Q(I,B){typeof I=="string"&&(I=[I]);var le=[];function xe(L){if(...
  function j (line 32) | function j(I,B){for(var le=!1;!I.eol();){if(!le&&I.match('"""')){B.token...
  function V (line 32) | function V(I){return function(B,le){for(var xe;xe=B.next();)if(xe=="*"&&...
  function x (line 32) | function x(I){return function(B,le){for(var xe=!1,q,L=!1;!B.eol();){if(!...
  function X (line 32) | function X(I){return function(B,le){for(var xe=!1,q,L=!1;!B.eol();){if(!...
  function v (line 32) | function v(b,T){for(var s,h,g=!1;!b.eol()&&(s=b.next())!=T.pending;){if(...
  function C (line 32) | function C(b,T){var s=b.next();return s==="$"?b.match(p)?"variable-2":"v...
  function Se (line 32) | function Se(te,fe){return Oe=fe,te}
  function je (line 32) | function je(te,fe){var oe=te.next();if(V[oe]){var Ue=V[oe](te,fe);if(Ue!...
  function Ze (line 32) | function Ze(te){return function(fe,oe){for(var Ue=!1,we;(we=fe.next())!=...
  function ke (line 32) | function ke(te,fe){return te.next(),te.match(/^\s*[\"\')]/,!1)?fe.tokeni...
  function Je (line 32) | function Je(te,fe,oe){this.type=te,this.indent=fe,this.prev=oe}
  function He (line 32) | function He(te,fe,oe,Ue){return te.context=new Je(oe,fe.indentation()+(U...
  function Ge (line 32) | function Ge(te){return te.context.prev&&(te.context=te.context.prev),te....
  function U (line 32) | function U(te,fe,oe){return Be[oe.context.type](te,fe,oe)}
  function G (line 32) | function G(te,fe,oe,Ue){for(var we=Ue||1;we>0;we--)oe.context=oe.context...
  function ce (line 32) | function ce(te){var fe=te.current().toLowerCase();de.hasOwnProperty(fe)?...
  function p (line 32) | function p(F){for(var D={},Q=0;Q<F.length;++Q)D[F[Q].toLowerCase()]=!0;r...
  function N (line 32) | function N(F,D){for(var Q=!1,j;(j=F.next())!=null;){if(Q&&j=="/"){D.toke...
  function c (line 32) | function c(x,K){function X(le){return K.tokenize=le,le(x,K)}var I=x.next...
  function d (line 32) | function d(x,K){var X=x.next();if(X==">"||X=="/"&&x.eat(">"))return K.to...
  function k (line 32) | function k(x){var K=function(X,I){for(;!X.eol();)if(X.next()==x){I.token...
  function E (line 32) | function E(x,K){return function(X,I){for(;!X.eol();){if(X.match(K)){I.to...
  function z (line 32) | function z(x){return function(K,X){for(var I;(I=K.next())!=null;){if(I==...
  function y (line 32) | function y(x){return x&&x.toLowerCase()}
  function R (line 32) | function R(x,K,X){this.prev=x.context,this.tagName=K||"",this.indent=x.i...
  function M (line 32) | function M(x){x.context&&(x.context=x.context.prev)}
  function H (line 32) | function H(x,K){for(var X;;){if(!x.context||(X=x.context.tagName,!s.cont...
  function Z (line 32) | function Z(x,K,X){return x=="openTag"?(X.tagStart=K.column(),ee):x=="clo...
  function ee (line 32) | function ee(x,K,X){return x=="word"?(X.tagName=K.current(),S="tag",D):s....
  function re (line 32) | function re(x,K,X){if(x=="word"){var I=K.current();return X.context&&X.c...
  function N (line 32) | function N(x,K,X){return x!="endTag"?(S="error",N):(M(X),Z)}
  function F (line 32) | function F(x,K,X){return S="error",N(x,K,X)}
  function D (line 32) | function D(x,K,X){if(x=="word")return S="attribute",Q;if(x=="endTag"||x=...
  function Q (line 32) | function Q(x,K,X){return x=="equals"?j:(s.allowMissing||(S="error"),D(x,...
  function j (line 32) | function j(x,K,X){return x=="string"?V:x=="word"&&s.allowUnquoted?(S="st...
  function V (line 32) | function V(x,K,X){return x=="string"?V:D(x,K,X)}
  function _ (line 32) | function _(pt){return{type:pt,style:"keyword"}}
  function k (line 32) | function k(_){for(var O=!1,ae,he=!1;(ae=_.next())!=null;){if(!O){if(ae==...
  function y (line 32) | function y(_,O,ae){return E=_,z=ae,O}
  function R (line 32) | function R(_,O){var ae=_.next();if(ae=='"'||ae=="'")return O.tokenize=M(...
  function M (line 32) | function M(_){return function(O,ae){var he=!1,ne;if(T&&O.peek()=="@"&&O....
  function H (line 32) | function H(_,O){for(var ae=!1,he;he=_.next();){if(he=="/"&&ae){O.tokeniz...
  function Z (line 32) | function Z(_,O){for(var ae=!1,he;(he=_.next())!=null;){if(!ae&&(he=="`"|...
  function re (line 32) | function re(_,O){O.fatArrowAt&&(O.fatArrowAt=null);var ae=_.string.index...
  function F (line 32) | function F(_,O,ae,he,ne,ye){this.indented=_,this.column=O,this.type=ae,t...
  function D (line 32) | function D(_,O){if(!h)return!1;for(var ae=_.localVars;ae;ae=ae.next)if(a...
  function Q (line 32) | function Q(_,O,ae,he,ne){var ye=_.cc;for(j.state=_,j.stream=ne,j.marked=...
  function V (line 32) | function V(){for(var _=arguments.length-1;_>=0;_--)j.cc.push(arguments[_])}
  function x (line 32) | function x(){return V.apply(null,arguments),!0}
  function K (line 32) | function K(_,O){for(var ae=O;ae;ae=ae.next)if(ae.name==_)return!0;return!1}
  function X (line 32) | function X(_){var O=j.state;if(j.marked="def",!!h){if(O.context){if(O.le...
  function I (line 32) | function I(_,O){if(O)if(O.block){var ae=I(_,O.prev);return ae?ae==O.prev...
  function B (line 32) | function B(_){return _=="public"||_=="private"||_=="protected"||_=="abst...
  function le (line 32) | function le(_,O,ae){this.prev=_,this.vars=O,this.block=ae}
  function xe (line 32) | function xe(_,O){this.name=_,this.next=O}
  function L (line 32) | function L(){j.state.context=new le(j.state.context,j.state.localVars,!1...
  function de (line 32) | function de(){j.state.context=new le(j.state.context,j.state.localVars,!...
  function ze (line 32) | function ze(){j.state.localVars=j.state.context.vars,j.state.context=j.s...
  function pe (line 32) | function pe(_,O){var ae=function(){var he=j.state,ne=he.indented;if(he.l...
  function Ee (line 32) | function Ee(){var _=j.state;_.lexical.prev&&(_.lexical.type==")"&&(_.ind...
  function ge (line 32) | function ge(_){function O(ae){return ae==_?x():_==";"||ae=="}"||ae==")"|...
  function Oe (line 32) | function Oe(_,O){return _=="var"?x(pe("vardef",O),Hr,ge(";"),Ee):_=="key...
  function qe (line 32) | function qe(_){if(_=="(")return x($t,ge(")"))}
  function Se (line 32) | function Se(_,O){return ke(_,O,!1)}
  function je (line 32) | function je(_,O){return ke(_,O,!0)}
  function Ze (line 32) | function Ze(_){return _!="("?V():x(pe(")"),Je,ge(")"),Ee)}
  function ke (line 32) | function ke(_,O,ae){if(j.state.fatArrowAt==j.stream.start){var he=ae?Be:...
  function Je (line 32) | function Je(_){return _.match(/[;\}\)\],]/)?V():V(Se)}
  function He (line 32) | function He(_,O){return _==","?x(Je):Ge(_,O,!1)}
  function Ge (line 32) | function Ge(_,O,ae){var he=ae==!1?He:Ge,ne=ae==!1?Se:je;if(_=="=>")retur...
  function U (line 32) | function U(_,O){return _!="quasi"?V():O.slice(O.length-2)!="${"?x(U):x(J...
  function G (line 32) | function G(_){if(_=="}")return j.marked="string-2",j.state.tokenize=Z,x(U)}
  function ce (line 32) | function ce(_){return re(j.stream,j.state),V(_=="{"?Oe:Se)}
  function Be (line 32) | function Be(_){return re(j.stream,j.state),V(_=="{"?Oe:je)}
  function te (line 32) | function te(_){return function(O){return O=="."?x(_?oe:fe):O=="variable"...
  function fe (line 32) | function fe(_,O){if(O=="target")return j.marked="keyword",x(He)}
  function oe (line 32) | function oe(_,O){if(O=="target")return j.marked="keyword",x(Ge)}
  function Ue (line 32) | function Ue(_){return _==":"?x(Ee,Oe):V(He,ge(";"),Ee)}
  function we (line 32) | function we(_){if(_=="variable")return j.marked="property",x()}
  function Me (line 32) | function Me(_,O){if(_=="async")return j.marked="property",x(Me);if(_=="v...
  function Le (line 32) | function Le(_){return _!="variable"?V($):(j.marked="property",x(Bt))}
  function $ (line 32) | function $(_){if(_==":")return x(je);if(_=="(")return V(Bt)}
  function W (line 32) | function W(_,O,ae){function he(ne,ye){if(ae?ae.indexOf(ne)>-1:ne==","){v...
  function se (line 32) | function se(_,O,ae){for(var he=3;he<arguments.length;he++)j.cc.push(argu...
  function De (line 32) | function De(_){return _=="}"?x():V(Oe,De)}
  function nt (line 32) | function nt(_,O){if(g){if(_==":")return x(Pe);if(O=="?")return x(nt)}}
  function dt (line 32) | function dt(_,O){if(g&&(_==":"||O=="in"))return x(Pe)}
  function Pt (line 32) | function Pt(_){if(g&&_==":")return j.stream.match(/^\s*\w+\s+is\b/,!1)?x...
  function It (line 32) | function It(_,O){if(O=="is")return j.marked="keyword",x()}
  function Pe (line 32) | function Pe(_,O){if(O=="keyof"||O=="typeof"||O=="infer"||O=="readonly")r...
  function xt (line 32) | function xt(_){if(_=="=>")return x(Pe)}
  function Fe (line 32) | function Fe(_){return _.match(/[\}\)\]]/)?x():_==","||_==";"?x(Fe):V(nr,...
  function nr (line 32) | function nr(_,O){if(_=="variable"||j.style=="keyword")return j.marked="p...
  function _t (line 32) | function _t(_,O){return _!="quasi"?V():O.slice(O.length-2)!="${"?x(_t):x...
  function it (line 32) | function it(_){if(_=="}")return j.marked="string-2",j.state.tokenize=Z,x...
  function ot (line 32) | function ot(_,O){return _=="variable"&&j.stream.match(/^\s*[?:]/,!1)||O=...
  function Ht (line 32) | function Ht(_,O){if(O=="<")return x(pe(">"),W(Pe,">"),Ee,Ht);if(O=="|"||...
  function Ft (line 32) | function Ft(_,O){if(O=="<")return x(pe(">"),W(Pe,">"),Ee,Ht)}
  function Wt (line 32) | function Wt(){return V(Pe,kt)}
  function kt (line 32) | function kt(_,O){if(O=="=")return x(Pe)}
  function Hr (line 32) | function Hr(_,O){return O=="enum"?(j.marked="keyword",x(Ae)):V(Ct,nt,Ut,...
  function Ct (line 32) | function Ct(_,O){if(g&&B(O))return j.marked="keyword",x(Ct);if(_=="varia...
  function dr (line 32) | function dr(_,O){return _=="variable"&&!j.stream.match(/^\s*:/,!1)?(X(O)...
  function yn (line 32) | function yn(){return V(Ct,Ut)}
  function Ut (line 32) | function Ut(_,O){if(O=="=")return x(je)}
  function eo (line 32) | function eo(_){if(_==",")return x(Hr)}
  function Br (line 32) | function Br(_,O){if(_=="keyword b"&&O=="else")return x(pe("form","else")...
  function ei (line 32) | function ei(_,O){if(O=="await")return x(ei);if(_=="(")return x(pe(")"),x...
  function xn (line 32) | function xn(_){return _=="var"?x(Hr,pr):_=="variable"?x(pr):V(pr)}
  function pr (line 32) | function pr(_,O){return _==")"?x():_==";"?x(pr):O=="in"||O=="of"?(j.mark...
  function Bt (line 32) | function Bt(_,O){if(O=="*")return j.marked="keyword",x(Bt);if(_=="variab...
  function hr (line 32) | function hr(_,O){if(O=="*")return j.marked="keyword",x(hr);if(_=="variab...
  function ti (line 32) | function ti(_,O){if(_=="keyword"||_=="variable")return j.marked="type",x...
  function $t (line 32) | function $t(_,O){return O=="@"&&x(Se,$t),_=="spread"?x($t):g&&B(O)?(j.ma...
  function to (line 32) | function to(_,O){return _=="variable"?Wr(_,O):Kt(_,O)}
  function Wr (line 32) | function Wr(_,O){if(_=="variable")return X(O),x(Kt)}
  function Kt (line 32) | function Kt(_,O){if(O=="<")return x(pe(">"),W(Wt,">"),Ee,Kt);if(O=="exte...
  function Gt (line 32) | function Gt(_,O){if(_=="async"||_=="variable"&&(O=="static"||O=="get"||O...
  function Cr (line 32) | function Cr(_,O){if(O=="!"||O=="?")return x(Cr);if(_==":")return x(Pe,Ut...
  function Ur (line 32) | function Ur(_,O){return O=="*"?(j.marked="keyword",x(Gr,ge(";"))):O=="de...
  function $r (line 32) | function $r(_,O){if(O=="as")return j.marked="keyword",x(ge("variable"));...
  function gr (line 32) | function gr(_){return _=="string"?x():_=="("?V(Se):_=="."?V(He):V(Kr,Vt,...
  function Kr (line 32) | function Kr(_,O){return _=="{"?se(Kr,"}"):(_=="variable"&&X(O),O=="*"&&(...
  function Vt (line 32) | function Vt(_){if(_==",")return x(Kr,Vt)}
  function _n (line 32) | function _n(_,O){if(O=="as")return j.marked="keyword",x(Kr)}
  function Gr (line 32) | function Gr(_,O){if(O=="from")return j.marked="keyword",x(Se)}
  function at (line 32) | function at(_){return _=="]"?x():V(W(je,"]"))}
  function Ae (line 32) | function Ae(){return V(pe("form"),Ct,ge("{"),pe("}"),W(ir,"}"),Ee,Ee)}
  function ir (line 32) | function ir(){return V(Ct,Ut)}
  function kn (line 32) | function kn(_,O){return _.lastType=="operator"||_.lastType==","||c.test(...
  function jt (line 32) | function jt(_,O,ae){return O.tokenize==R&&/^(?:operator|sof|keyword [bcd...
  function v (line 32) | function v(w,S,c){var d=w.current(),k=d.search(S);return k>-1?w.backUp(d...
  function b (line 32) | function b(w){var S=C[w];return S||(C[w]=new RegExp("\\s+"+w+`\\s*=\\s*(...
  function T (line 32) | function T(w,S){var c=w.match(b(S));return c?/^\s*(.*?)\s*$/.exec(c[2])[...
  function s (line 32) | function s(w,S){return new RegExp((S?"^":"")+"</\\s*"+w+"\\s*>","i")}
  function h (line 32) | function h(w,S){for(var c in w)for(var d=S[c]||(S[c]=[]),k=w[c],E=k.leng...
  function g (line 32) | function g(w,S){for(var c=0;c<w.length;c++){var d=w[c];if(!d[0]||d[1].te...
  function y (line 32) | function y(R,M){var H=c.token(R,M.htmlState),Z=/\btag\b/.test(H),ee;if(Z...
  function T (line 32) | function T(c,d){if(c.match("{{"))return d.tokenize=h,"tag";if(c.match("{...
  function s (line 32) | function s(c,d){return function(k,E){if(!E.escapeNext&&k.eat(c))E.tokeni...
  function h (line 32) | function h(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null"...
  function g (line 32) | function g(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null"...
  function w (line 32) | function w(c,d){return c.match(/^.*?#\}/)?d.tokenize=T:c.skipToEnd(),"co...
  function S (line 32) | function S(c,d){return c.match(/\{%\s*endcomment\s*%\}/,!1)?(d.tokenize=...
  function p (line 32) | function p(S,c){if(!S.hasOwnProperty(c))throw new Error("Undefined state...
  function v (line 32) | function v(S,c){if(!S)return/(?:)/;var d="";return S instanceof RegExp?(...
  function C (line 32) | function C(S){if(!S)return null;if(S.apply)return S;if(typeof S=="string...
  function b (line 32) | function b(S,c){(S.next||S.push)&&p(c,S.next||S.push),this.regex=v(S.reg...
  function T (line 32) | function T(S,c){return function(d,k){if(k.pending){var E=k.pending.shift...
  function s (line 32) | function s(S,c){if(S===c)return!0;if(!S||typeof S!="object"||!c||typeof ...
  function h (line 32) | function h(S,c,d,k){var E;if(d.persistent)for(var z=c.persistentStates;z...
  function g (line 32) | function g(S,c){for(var d=0;d<c.length;d++)if(c[d]===S)return!0}
  function w (line 32) | function w(S,c){return function(d,k,E){if(d.local&&d.local.mode.indent)r...
  function T (line 32) | function T(q){if(o.findModeByName){var L=o.findModeByName(q);L&&(q=L.mim...
  function M (line 32) | function M(q,L,de){return L.f=L.inline=de,de(q,L)}
  function H (line 32) | function H(q,L,de){return L.f=L.block=de,de(q,L)}
  function Z (line 32) | function Z(q){return!q||!/\S/.test(q.string)}
  function ee (line 32) | function ee(q){if(q.linkTitle=!1,q.linkHref=!1,q.linkText=!1,q.em=!1,q.s...
  function re (line 32) | function re(q,L){var de=q.column()===L.indentation,ze=Z(L.prevLine.strea...
  function N (line 32) | function N(q,L){var de=C.token(q,L.htmlState);if(!b){var ze=o.innerMode(...
  function F (line 32) | function F(q,L){var de=L.listStack[L.listStack.length-1]||0,ze=L.indenta...
  function D (line 32) | function D(q){var L=[];if(q.formatting){L.push(s.formatting),typeof q.fo...
  function Q (line 32) | function Q(q,L){if(q.match(k,!0))return D(L)}
  function j (line 32) | function j(q,L){var de=L.text(q,L);if(typeof de<"u")return de;if(L.list)...
  function V (line 32) | function V(q,L){var de=q.next();if(de===">"){L.f=L.inline=j,v.highlightF...
  function x (line 32) | function x(q,L){if(q.eatSpace())return null;var de=q.next();return de===...
  function X (line 32) | function X(q){return function(L,de){var ze=L.next();if(ze===q){de.f=de.i...
  function I (line 32) | function I(q,L){return q.match(/^([^\]\\]|\\.)*\]:/,!1)?(L.f=B,q.next(),...
  function B (line 32) | function B(q,L){if(q.match("]:",!0)){L.f=L.inline=le,v.highlightFormatti...
  function le (line 32) | function le(q,L){return q.eatSpace()?null:(q.match(/^[^\s]+/,!0),q.peek(...
  function T (line 32) | function T(w){return w.code=!1,null}
  function h (line 32) | function h(k,E){var z=k.next();if(z=='"'||z=="'"||z=="`")return E.tokeni...
  function g (line 32) | function g(k){return function(E,z){for(var y=!1,R,M=!1;(R=E.next())!=nul...
  function w (line 32) | function w(k,E){for(var z=!1,y;y=k.next();){if(y=="/"&&z){E.tokenize=h;b...
  function S (line 32) | function S(k,E,z,y,R){this.indented=k,this.column=E,this.type=z,this.ali...
  function c (line 32) | function c(k,E,z){return k.context=new S(k.indented,E,z,null,k.context)}
  function d (line 32) | function d(k){if(k.context.prev){var E=k.context.type;return(E==")"||E==...
  function p (line 32) | function p(w,S){return w.skipToEnd(),S.cur=h,"error"}
  function v (line 32) | function v(w,S){return w.match(/^HTTP\/\d\.\d/)?(S.cur=C,"keyword"):w.ma...
  function C (line 32) | function C(w,S){var c=w.match(/^\d+/);if(!c)return p(w,S);S.cur=b;var d=...
  function b (line 32) | function b(w,S){return w.skipToEnd(),S.cur=h,null}
  function T (line 32) | function T(w,S){return w.eatWhile(/\S/),S.cur=s,"string-2"}
  function s (line 32) | function s(w,S){return w.match(/^HTTP\/\d\.\d$/)?(S.cur=h,"keyword"):p(w...
  function h (line 32) | function h(w){return w.sol()&&!w.eat(/[ \t]/)?w.match(/^.*?:/)?"atom":(w...
  function g (line 32) | function g(w){return w.skipToEnd(),null}
  function s (line 32) | function s(h,g){var w=h.peek();if(g.incomment)return h.skipTo("#}")?(h.e...
  function p (line 32) | function p(C,b,T,s){this.state=C,this.mode=b,this.depth=T,this.prev=s}
  function v (line 32) | function v(C){return new p(o.copyState(C.mode,C.state),C.mode,C.depth,C....
  function h (line 32) | function h(c){var d=c.tagName;c.tagName=null;var k=T.indent(c,"","");ret...
  function g (line 32) | function g(c,d){return d.context.mode==T?w(c,d,d.context):S(c,d,d.context)}
  function w (line 32) | function w(c,d,k){if(k.depth==2)return c.match(/^.*?\*\//)?k.depth=1:c.s...
  function S (line 32) | function S(c,d,k){if(c.peek()=="<"&&!c.match(/^<([^<>]|<[^>]*>)+,\s*>/,!...
  function v (line 32) | function v(k){for(var E={},z=k.split(" "),y=0;y<z.length;++y)E[z[y]]=!0;...
  function g (line 32) | function g(k,E){return h=E,k}
  function w (line 32) | function w(k,E){k.eatWhile(/[\w\$_]/);var z=k.current();if(C.propertyIsE...
  function S (line 32) | function S(k,E){for(var z=!1,y;(y=k.next())!=null;){if(z&&y=="/"){E.toke...
  function c (line 32) | function c(k,E){for(var z=0,y;(y=k.next())!=null;){if(z>=2&&y==">"){E.to...
  function d (line 32) | function d(k){return function(E,z){for(var y=!1,R;(R=E.next())!=null&&!(...
  function p (line 32) | function p(w){for(var S={},c=w.split(" "),d=0;d<c.length;++d)S[c[d]]=!0;...
  function T (line 32) | function T(w,S){var c=w.next();if(c=="#"&&S.startOfLine)return w.skipToE...
  function s (line 32) | function s(w){return function(S,c){for(var d=!1,k,E=!1;(k=S.next())!=nul...
  function h (line 32) | function h(w,S){for(var c=!1,d;d=w.next();){if(d==")"&&c){S.tokenize=nul...
  function g (line 32) | function g(w,S){for(var c;c=w.next();)if(c=="}"){S.tokenize=null;break}r...
  function g (line 32) | function g(c,d,k,E,z){return d.chain=null,d.style=null,d.tail=null,d.tok...
  function w (line 32) | function w(c,d,k){return d.tokenize=function(E,z){return E.string==k&&(z...
  function S (line 32) | function S(c,d){if(c.eatSpace())return null;if(d.chain)return g(c,d,d.ch...
  function p (line 32) | function p(T,s){return T.string.charAt(T.pos+(s||0))}
  function v (line 32) | function v(T,s){if(s){var h=T.pos-s;return T.string.substr(h>=0?h:0,s)}e...
  function C (line 32) | function C(T,s){var h=T.string.length,g=h-T.pos+1;return T.string.substr...
  function b (line 32) | function b(T,s){var h=T.pos+s,g;h<=0?T.pos=0:h>=(g=T.string.length-1)?T....
  function p (line 32) | function p(w){for(var S={},c=w.split(" "),d=0;d<c.length;++d)S[c[d]]=!0;...
  function v (line 32) | function v(w,S,c){return w.length==0?C(S):function(d,k){for(var E=w[0],z...
  function C (line 32) | function C(w,S){return function(c,d){return b(c,d,w,S)}}
  function b (line 32) | function b(w,S,c,d){if(d!==!1&&w.match("${",!1)||w.match("{$",!1))return...
  function k (line 32) | function k(E,z){var y=z.curMode==d;if(E.sol()&&z.pending&&z.pending!='"'...
  function p (line 32) | function p(s){return new RegExp("^(("+s.join(")|(")+"))\\b","i")}
  function T (line 32) | function T(s){return s.eatSpace()?null:s.match("//")?(s.skipToEnd(),"com...
  function p (line 32) | function p(h){return new RegExp("^(("+h.join(")|(")+"))\\b")}
  function T (line 32) | function T(h){return h.scopes[h.scopes.length-1]}
  function ee (line 32) | function ee(K,X){var I=K.sol()&&X.lastToken!="\\";if(I&&(X.indent=K.inde...
  function re (line 32) | function re(K,X,I){if(K.eatSpace())return null;if(!I&&K.match(/^#.*/))re...
  function N (line 32) | function N(K,X){for(;"rubf".indexOf(K.charAt(0).toLowerCase())>=0;)K=K.s...
  function F (line 32) | function F(K,X){for(;"rubf".indexOf(K.charAt(0).toLowerCase())>=0;)K=K.s...
  function D (line 32) | function D(K){for(;T(K).type!="py";)K.scopes.pop();K.scopes.push({offset...
  function Q (line 32) | function Q(K,X,I){var B=K.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:K.column(...
  function j (line 32) | function j(K,X){for(var I=K.indentation();X.scopes.length>1&&T(X).offset...
  function V (line 32) | function V(K,X){K.sol()&&(X.beginningOfLine=!0,X.dedent=!1);var I=X.toke...
  function p (line 32) | function p(g){for(var w={},S=0,c=g.length;S<c;++S)w[g[S]]=!0;return w}
  function S (line 32) | function S(M,H,Z){return Z.tokenize.push(M),M(H,Z)}
  function c (line 32) | function c(M,H){if(M.sol()&&M.match("=begin")&&M.eol())return H.tokenize...
  function d (line 32) | function d(M){for(var H=M.pos,Z=0,ee,re=!1,N=!1;(ee=M.next())!=null;)if(...
  function k (line 32) | function k(M){return M||(M=1),function(H,Z){if(H.peek()=="}"){if(M==1)re...
  function E (line 32) | function E(){var M=!1;return function(H,Z){return M?(Z.tokenize.pop(),Z....
  function z (line 32) | function z(M,H,Z,ee){return function(re,N){var F=!1,D;for(N.context.type...
  function y (line 32) | function y(M,H){return function(Z,ee){return H&&Z.eatSpace(),Z.match(M)?...
  function R (line 32) | function R(M,H){return M.sol()&&M.match("=end")&&M.eol()&&H.tokenize.pop...
  function h (line 32) | function h(N){return new RegExp("^"+N.join("|"))}
  function E (line 32) | function E(N){return!N.peek()||N.match(/\s+$/,!1)}
  function z (line 32) | function z(N,F){var D=N.peek();return D===")"?(N.next(),F.tokenizer=ee,"...
  function y (line 32) | function y(N,F){return function(D,Q){return D.sol()&&D.indentation()<=N?...
  function R (line 32) | function R(N,F){F==null&&(F=!0);function D(Q,j){var V=Q.next(),x=Q.peek(...
  function M (line 32) | function M(N){return function(F,D){return F.peek()==="}"?(F.next(),D.tok...
  function H (line 32) | function H(N){if(N.indentCount==0){N.indentCount++;var F=N.scopes[0].off...
  function Z (line 32) | function Z(N){N.scopes.length!=1&&N.scopes.shift()}
  function ee (line 32) | function ee(N,F){var D=N.peek();if(N.match("/*"))return F.tokenizer=y(N....
  function re (line 32) | function re(N,F){N.sol()&&(F.indentCount=0);var D=F.tokenizer(N,F),Q=N.c...
  function v (line 32) | function v(d,k){for(var E=0;E<k.length;E++)p[k[E]]=d}
  function s (line 32) | function s(d,k){if(d.eatSpace())return null;var E=d.sol(),z=d.next();if(...
  function h (line 32) | function h(d,k){var E=d=="("?")":d=="{"?"}":d;return function(z,y){for(v...
  function g (line 32) | function g(d,k){return function(E,z){return z.tokens[0]=h(d,k),E.next(),...
  function S (line 32) | function S(d){return function(k,E){return k.sol()&&k.string==d&&E.tokens...
  function c (line 32) | function c(d,k){return(k.tokens[0]||s)(d,k)}
  function ee (line 32) | function ee(Q,j){var V=Q.next();if(y[V]){var x=y[V](Q,j);if(x!==!1)retur...
  function re (line 32) | function re(Q,j){return function(V,x){for(var K=!1,X;(X=V.next())!=null;...
  function N (line 32) | function N(Q){return function(j,V){var x=j.match(/^.*?(\/\*|\*\/)/);retu...
  function F (line 32) | function F(Q,j,V){j.context={prev:j.context,indent:Q.indentation(),col:Q...
  function D (line 32) | function D(Q){Q.indent=Q.context.indent,Q.context=Q.context.prev}
  function p (line 32) | function p(g){for(var w;(w=g.next())!=null;)if(w=="`"&&!g.eat("`"))retur...
  function v (line 32) | function v(g){for(var w;(w=g.next())!=null;)if(w=='"'&&!g.eat('"'))retur...
  function C (line 32) | function C(g){return g.eat("@")&&(g.match("session."),g.match("local."),...
  function b (line 32) | function b(g){return g.eat("N")?"atom":g.match(/^[a-zA-Z.#!?]/)?"variabl...
  function s (line 32) | function s(g){for(var w={},S=g.split(" "),c=0;c<S.length;++c)w[S[c]]=!0;...
  function Oe (line 32) | function Oe($,W){if(L=$.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\...
  function qe (line 32) | function qe($,W){for(var se=!1,De;(De=$.next())!=null;){if(se&&De=="/"){...
  function Se (line 32) | function Se($){return function(W,se){for(var De=!1,nt;(nt=W.next())!=nul...
  function je (line 32) | function je($,W){return $.next(),$.match(/\s*[\"\')]/,!1)?W.tokenize=nul...
  function Ze (line 32) | function Ze($,W,se,De){this.type=$,this.indent=W,this.prev=se,this.line=...
  function ke (line 32) | function ke($,W,se,De){return De=De>=0?De:H,$.context=new Ze(se,W.indent...
  function Je (line 32) | function Je($,W){var se=$.context.indent-H;return W=W||!1,$.context=$.co...
  function He (line 32) | function He($,W,se){return de[se.context.type]($,W,se)}
  function Ge (line 32) | function Ge($,W,se,De){for(var nt=De||1;nt>0;nt--)se.context=se.context....
  function U (line 32) | function U($){return $.toLowerCase()in ee}
  function G (line 32) | function G($){return $=$.toLowerCase(),$ in N||$ in X}
  function ce (line 32) | function ce($){return $.toLowerCase()in le}
  function Be (line 32) | function Be($){return $.toLowerCase().match(xe)}
  function te (line 32) | function te($){var W=$.toLowerCase(),se="variable-2";return U($)?se="tag...
  function fe (line 32) | function fe($,W){return Me(W)&&($=="{"||$=="]"||$=="hash"||$=="qualifier...
  function oe (line 32) | function oe($,W){return $=="{"&&W.match(/^\s*\$?[\w-]+/i,!1)}
  function Ue (line 32) | function Ue($,W){return $==":"&&W.match(/^[a-z-]+/,!1)}
  function we (line 32) | function we($){return $.sol()||$.string.match(new RegExp("^\\s*"+R($.cur...
  function Me (line 32) | function Me($){return $.eol()||$.match(/^\s*$/,!1)}
  function Le (line 32) | function Le($){var W=/^\s*[-_]*[a-z0-9]+[\w-]*/i,se=typeof $=="string"?$...
  function z (line 32) | function z(M){return M=M.sort(function(H,Z){return Z>H}),new RegExp("^((...
  function y (line 32) | function y(M){for(var H={},Z=0;Z<M.length;++Z)H[M[Z]]=!0;return H}
  function R (line 32) | function R(M){return M.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}
  function p (line 32) | function p(N){for(var F={},D=0;D<N.length;D++)F[N[D]]=!0;return F}
  function y (line 32) | function y(N,F,D){if(N.sol()&&(F.indented=N.indentation()),N.eatSpace())...
  function R (line 32) | function R(){var N=0;return function(F,D,Q){var j=y(F,D,Q);if(j=="punctu...
  function M (line 32) | function M(N,F,D){for(var Q=N.length==1,j,V=!1;j=F.peek();)if(V){if(F.ne...
  function H (line 32) | function H(N,F){for(var D;D=N.next();)if(D==="/"&&N.eat("*"))F.tokenize....
  function Z (line 32) | function Z(N,F,D){this.prev=N,this.align=F,this.indented=D}
  function ee (line 32) | function ee(N,F){var D=F.match(/^\s*($|\/[\/\*])/,!1)?null:F.column()+1;...
  function re (line 32) | function re(N){N.context&&(N.indented=N.context.indented,N.context=N.con...
  function b (line 32) | function b(F){return new RegExp("^(("+F.join(")|(")+"))\\b")}
  function R (line 32) | function R(F,D){if(F.sol()){D.scope.align===null&&(D.scope.align=!1);var...
  function M (line 32) | function M(F,D,Q){return function(j,V){for(;!j.eol();)if(j.eatWhile(/[^'...
  function H (line 32) | function H(F,D){for(;!F.eol();){if(F.eatWhile(/[^#]/),F.match("###")){D....
  function Z (line 32) | function Z(F,D,Q){Q=Q||"coffee";for(var j=0,V=!1,x=null,K=D.scope;K;K=K....
  function ee (line 32) | function ee(F,D){if(D.scope.prev)if(D.scope.type==="coffee"){for(var Q=F...
  function re (line 32) | function re(F,D){var Q=D.tokenize(F,D),j=F.current();j==="return"&&(D.de...
  function g (line 32) | function g(){this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,...
  function w (line 32) | function w(U,G){if(U.sol()&&(G.javaScriptLine=!1,G.javaScriptLineExclude...
  function S (line 32) | function S(U,G){if(G.javaScriptArguments){if(G.javaScriptArgumentsDepth=...
  function c (line 32) | function c(U){if(U.match(/^yield\b/))return"keyword"}
  function d (line 32) | function d(U){if(U.match(/^(?:doctype) *([^\n]+)?/))return C}
  function k (line 32) | function k(U,G){if(U.match("#{"))return G.isInterpolating=!0,G.interpola...
  function E (line 32) | function E(U,G){if(G.isInterpolating){if(U.peek()==="}"){if(G.interpolat...
  function z (line 32) | function z(U,G){if(U.match(/^case\b/))return G.javaScriptLine=!0,v}
  function y (line 32) | function y(U,G){if(U.match(/^when\b/))return G.javaScriptLine=!0,G.javaS...
  function R (line 32) | function R(U){if(U.match(/^default\b/))return v}
  function M (line 32) | function M(U,G){if(U.match(/^extends?\b/))return G.restOfLine="string",v}
  function H (line 32) | function H(U,G){if(U.match(/^append\b/))return G.restOfLine="variable",v}
  function Z (line 32) | function Z(U,G){if(U.match(/^prepend\b/))return G.restOfLine="variable",v}
  function ee (line 32) | function ee(U,G){if(U.match(/^block\b *(?:(prepend|append)\b)?/))return ...
  function re (line 32) | function re(U,G){if(U.match(/^include\b/))return G.restOfLine="string",v}
  function N (line 32) | function N(U,G){if(U.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&U.match("inc...
  function F (line 32) | function F(U,G){if(G.isIncludeFiltered){var ce=B(U,G);return G.isInclude...
  function D (line 32) | function D(U,G){if(U.match(/^mixin\b/))return G.javaScriptLine=!0,v}
  function Q (line 32) | function Q(U,G){if(U.match(/^\+([-\w]+)/))return U.match(/^\( *[-\w]+ *=...
  function j (line 32) | function j(U,G){if(G.mixinCallAfter)return G.mixinCallAfter=!1,U.match(/...
  function V (line 32) | function V(U,G){if(U.match(/^(if|unless|else if|else)\b/))return G.javaS...
  function x (line 32) | function x(U,G){if(U.match(/^(- *)?(each|for)\b/))return G.isEach=!0,v}
  function K (line 32) | function K(U,G){if(G.isEach){if(U.match(/^ in\b/))return G.javaScriptLin...
  function X (line 32) | function X(U,G){if(U.match(/^while\b/))return G.javaScriptLine=!0,v}
  function I (line 32) | function I(U,G){var ce;if(ce=U.match(/^(\w(?:[-:\w]*\w)?)\/?/))return G....
  function B (line 32) | function B(U,G){if(U.match(/^:([\w\-]+)/)){var ce;return p&&p.innerModes...
  function le (line 32) | function le(U,G){if(U.match(/^(!?=|-)/))return G.javaScriptLine=!0,"punc...
  function xe (line 32) | function xe(U){if(U.match(/^#([\w-]+)/))return b}
  function q (line 32) | function q(U){if(U.match(/^\.([\w-]+)/))return T}
  function L (line 32) | function L(U,G){if(U.peek()=="(")return U.next(),G.isAttrs=!0,G.attrsNes...
  function de (line 32) | function de(U,G){if(G.isAttrs){if(s[U.peek()]&&G.attrsNest.push(s[U.peek...
  function ze (line 32) | function ze(U,G){if(U.match(/^&attributes\b/))return G.javaScriptArgumen...
  function pe (line 32) | function pe(U){if(U.sol()&&U.eatSpace())return"indent"}
  function Ee (line 32) | function Ee(U,G){if(U.match(/^ *\/\/(-)?([^\n]*)/))return G.indentOf=U.i...
  function ge (line 32) | function ge(U){if(U.match(/^: */))return"colon"}
  function Oe (line 32) | function Oe(U,G){if(U.match(/^(?:\| ?| )([^\n]+)/))return"string";if(U.m...
  function qe (line 32) | function qe(U,G){if(U.eat(".")){var ce=null;return G.lastTag==="script"&...
  function Se (line 32) | function Se(U){return U.next(),null}
  function je (line 32) | function je(U,G,ce){ce=o.mimeModes[ce]||ce,ce=p.innerModes&&p.innerModes...
  function Ze (line 32) | function Ze(U,G,ce){if(U.indentation()>G.indentOf||G.innerModeForLine&&!...
  function ke (line 32) | function ke(U,G){if(U.sol()&&(G.restOfLine=""),G.restOfLine){U.skipToEnd...
  function Je (line 32) | function Je(){return new g}
  function He (line 32) | function He(U){return U.copy()}
  function Ge (line 32) | function Ge(U,G){var ce=Ze(U,G)||ke(U,G)||E(U,G)||F(U,G)||K(U,G)||de(U,G...
  function C (line 32) | function C(b,T,s,h){if(typeof T=="string"){var g=b.indexOf(T,s);return h...
  function qd (line 34) | function qd(o){for(var p;(p=Md.exec(o))!==null;){var v=p[0];if(v.indexOf...
  function Id (line 34) | function Id(o){for(var p=new DOMParser,v=p.parseFromString(o,"text/html"...
  function vc (line 34) | function vc(o){return mc?o=o.replace("Ctrl","Cmd"):o=o.replace("Cmd","Ct...
  function Fd (line 34) | function Fd(o,p,v,C){var b=qi(o,!1,p,v,"button",C);b.classList.add("easy...
  function qi (line 34) | function qi(o,p,v,C,b,T){o=o||{};var s=document.createElement(b);if(o.at...
  function Nd (line 34) | function Nd(){var o=document.createElement("i");return o.className="sepa...
  function Od (line 34) | function Od(o,p,v){var C,b=o;return p&&(C=Dd(p),v[C]&&(b+=" ("+vc(v[C])+...
  function Tr (line 34) | function Tr(o,p){p=p||o.getCursor("start");var v=o.getTokenAt(p);if(!v.t...
  function jr (line 34) | function jr(o){var p=o.codemirror;p.setOption("fullScreen",!p.getOption(...
  function Fi (line 34) | function Fi(o){sa(o,"bold",o.options.blockStyles.bold)}
  function Ni (line 34) | function Ni(o){sa(o,"italic",o.options.blockStyles.italic)}
  function Oi (line 34) | function Oi(o){sa(o,"strikethrough","~~")}
  function Pi (line 34) | function Pi(o){var p=o.options.blockStyles.code;function v(K){if(typeof ...
  function ji (line 40) | function ji(o){la(o.codemirror,"quote")}
  function Jn (line 40) | function Jn(o){Lr(o.codemirror,"smaller")}
  function Ri (line 40) | function Ri(o){Lr(o.codemirror,"bigger")}
  function Hi (line 40) | function Hi(o){Lr(o.codemirror,void 0,1)}
  function Bi (line 40) | function Bi(o){Lr(o.codemirror,void 0,2)}
  function Wi (line 40) | function Wi(o){Lr(o.codemirror,void 0,3)}
  function na (line 40) | function na(o){Lr(o.codemirror,void 0,4)}
  function ia (line 40) | function ia(o){Lr(o.codemirror,void 0,5)}
  function oa (line 40) | function oa(o){Lr(o.codemirror,void 0,6)}
  function Ui (line 40) | function Ui(o){var p=o.codemirror,v="*";["-","+","*"].includes(o.options...
  function $i (line 40) | function $i(o){la(o.codemirror,"ordered-list")}
  function Ki (line 40) | function Ki(o){Pd(o.codemirror)}
  function Gi (line 40) | function Gi(o){var p=o.options,v="https://";if(p.promptURLs){var C=promp...
  function Zi (line 40) | function Zi(o){var p=o.options,v="https://";if(p.promptURLs){var C=promp...
  function bc (line 40) | function bc(o){return encodeURI(o).replace(/([\\()])/g,"\\$1")}
  function aa (line 40) | function aa(o){o.openBrowseFileWindow()}
  function yc (line 40) | function yc(o,p){var v=o.codemirror,C=Tr(v),b=o.options,T=p.substr(p.las...
  function Xi (line 40) | function Xi(o){var p=o.codemirror,v=Tr(p),C=o.options;Rr(p,v.table,C.ins...
  function Yi (line 40) | function Yi(o){var p=o.codemirror,v=Tr(p),C=o.options;Rr(p,v.image,C.ins...
  function Qi (line 40) | function Qi(o){var p=o.codemirror;p.undo(),p.focus()}
  function Vi (line 40) | function Vi(o){var p=o.codemirror;p.redo(),p.focus()}
  function bn (line 40) | function bn(o){var p=o.codemirror,v=p.getWrapperElement(),C=v.nextSiblin...
  function Ji (line 40) | function Ji(o){var p=o.codemirror,v=p.getWrapperElement(),C=o.toolbar_di...
  function Rr (line 40) | function Rr(o,p,v,C){if(!o.getWrapperElement().lastChild.classList.conta...
  function Lr (line 40) | function Lr(o,p,v){if(!o.getWrapperElement().lastChild.classList.contain...
  function la (line 40) | function la(o,p,v){if(!o.getWrapperElement().lastChild.classList.contain...
  function xc (line 40) | function xc(o,p,v,C){if(!(!o.codemirror||o.isPreviewActive())){var b=o.c...
  function sa (line 40) | function sa(o,p,v,C){if(!(!o.codemirror||o.isPreviewActive())){C=typeof ...
  function Pd (line 40) | function Pd(o){if(!o.getWrapperElement().lastChild.classList.contains("e...
  function Ii (line 40) | function Ii(o,p){if(Math.abs(o)<1024)return""+o+p[0];var v=0;do o/=1024,...
  function _c (line 40) | function _c(o,p){for(var v in p)Object.prototype.hasOwnProperty.call(p,v...
  function fr (line 40) | function fr(o){for(var p=1;p<arguments.length;p++)o=_c(o,arguments[p]);r...
  function gc (line 40) | function gc(o){var p=/[a-zA-Z0-9_\u00A0-\u02AF\u0392-\u03c9\u0410-\u04F9...
  function Te (line 40) | function Te(o){o=o||{},o.parent=this;var p=!0;if(o.autoDownloadFontAweso...
  function kc (line 40) | function kc(){if(typeof localStorage=="object")try{localStorage.setItem(...
  function h (line 51) | function h(y,R,M){return{addNew:!1}}
  function c (line 51) | function c(y,R){var M,H=window.getComputedStyle(document.querySelector("...
  function k (line 51) | function k(y,R){y.setAttribute("data-img-src",R.url),y.setAttribute("sty...
  function E (line 51) | function E(){p.previewImagesInEditor&&w.querySelectorAll(".cm-image-mark...
  function b (line 51) | function b(T){v.options.imageUploadFunction?v.uploadImagesUsingCustomFun...
  function b (line 51) | function b(g){C.updateStatusBar("upload-image",g),setTimeout(function(){...
  function T (line 51) | function T(g){var w=C.options.imageTexts.sizeUnits.split(",");return g.r...
  function C (line 51) | function C(s){yc(v,s)}
  function b (line 51) | function b(s){var h=T(s);v.updateStatusBar("upload-image",h),setTimeout(...
  function T (line 51) | function T(s){var h=v.options.imageTexts.sizeUnits.split(",");return s.r...
  function Kd (line 51) | function Kd({canAttachFiles:o,isLiveDebounced:p,isLiveOnBlur:v,liveDebou...

FILE: public/js/filament/forms/components/rich-editor.js
  function g (line 1) | function g(){this.clear()}
  function g (line 1) | function g(){}
  function x (line 1) | function x(n,p){return function(){n.apply(p,arguments)}}
  function b (line 1) | function b(n){if(typeof this!="object")throw new TypeError("Promises mus...
  function y (line 1) | function y(n,p){for(;n._state===3;)n=n._value;return n._state===0?void n...
  function h (line 1) | function h(n,p){try{if(p===n)throw new TypeError("A promise cannot be re...
  function o (line 1) | function o(n,p){n._state=2,n._value=p,e(n)}
  function e (line 1) | function e(n){n._state===2&&n._deferreds.length===0&&setTimeout(function...
  function a (line 1) | function a(n,p,c){this.onFulfilled=typeof n=="function"?n:null,this.onRe...
  function d (line 1) | function d(n,p){var c=!1;try{n(function(v){c||(c=!0,h(p,v))},function(v)...
  function t (line 1) | function t(A,f){try{if(f&&(typeof f=="object"||typeof f=="function")){va...
  function y (line 1) | function y(D){C.push(D),m||(m=!0,r(o))}
  function h (line 1) | function h(D){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill....
  function o (line 1) | function o(){m=!1;var D=C;C=[],D.sort(function(E,w){return E.uid_-w.uid_...
  function e (line 1) | function e(D){D.nodes_.forEach(function(R){var E=l.get(R);E&&E.forEach(f...
  function a (line 1) | function a(D,R){for(var E=D;E;E=E.parentNode){var w=l.get(E);if(w)for(va...
  function d (line 1) | function d(D){this.callback_=D,this.nodes_=[],this.records_=[],this.uid_...
  function i (line 1) | function i(D,R){this.type=D,this.target=R,this.addedNodes=[],this.remove...
  function u (line 1) | function u(D){var R=new i(D.type,D.target);return R.addedNodes=D.addedNo...
  function s (line 1) | function s(D,R){return L=new i(D,R)}
  function n (line 1) | function n(D){return O||(O=u(L),O.oldValue=D,O)}
  function p (line 1) | function p(){L=O=void 0}
  function c (line 1) | function c(D){return D===O||D===L}
  function v (line 1) | function v(D,R){return D===R?D:O&&c(D)?O:null}
  function t (line 1) | function t(D,R,E){this.observer=D,this.target=R,this.options=E,this.tran...
  function y (line 1) | function y(i,u){h(i,function(s){return u(s)?!0:void o(s,u)}),o(i,u)}
  function h (line 1) | function h(i,u,s){var n=i.firstElementChild;if(!n)for(n=i.firstChild;n&&...
  function o (line 1) | function o(i,u){for(var s=i.shadowRoot;s;)y(s,u),s=s.olderShadowRoot}
  function e (line 1) | function e(i,u){a(i,u,[])}
  function a (line 1) | function a(i,u,s){if(i=window.wrap(i),!(s.indexOf(i)>=0)){s.push(i);for(...
  function y (line 1) | function y(E,w){return h(E,w)||o(E,w)}
  function h (line 1) | function h(E,w){return b.upgrade(E,w)?!0:void(w&&d(E))}
  function o (line 1) | function o(E,w){m(E,function(k){return h(k,w)?!0:void 0})}
  function e (line 1) | function e(E){O.push(E),L||(L=!0,setTimeout(a))}
  function a (line 1) | function a(){L=!1;for(var E,w=O,k=0,T=w.length;T>k&&(E=w[k]);k++)E();O=[]}
  function d (line 1) | function d(E){S?e(function(){i(E)}):i(E)}
  function i (line 1) | function i(E){E.__upgraded__&&!E.__attached&&(E.__attached=!0,E.attached...
  function u (line 1) | function u(E){s(E),m(E,function(w){s(w)})}
  function s (line 1) | function s(E){S?e(function(){n(E)}):n(E)}
  function n (line 1) | function n(E){E.__upgraded__&&E.__attached&&(E.__attached=!1,E.detachedC...
  function p (line 1) | function p(E){for(var w=E,k=window.wrap(document);w;){if(w==k)return!0;w...
  function c (line 1) | function c(E){if(E.shadowRoot&&!E.shadowRoot.__watched){f.dom&&console.l...
  function v (line 1) | function v(E,w){if(f.dom){var k=w[0];if(k&&k.type==="childList"&&k.added...
  function t (line 1) | function t(E){for(E=window.wrap(E),E||(E=window.wrap(document));E.parent...
  function r (line 1) | function r(E){if(!E.__observer){var w=new MutationObserver(v.bind(this,E...
  function l (line 1) | function l(E){E=window.wrap(E),f.dom&&console.group("upgradeDocument: ",...
  function A (line 1) | function A(E){C(E,l)}
  function y (line 1) | function y(i,u){if(i.localName==="template"&&window.HTMLTemplateElement&...
  function h (line 1) | function h(i,u,s){return d.upgrade&&console.group("upgrade:",i.localName...
  function o (line 1) | function o(i,u){Object.__proto__||e(i,u.prototype,u.native),i.__proto__=...
  function e (line 1) | function e(i,u,s){for(var n={},p=u;p!==s&&p!==HTMLElement.prototype;){fo...
  function a (line 1) | function a(i){i.createdCallback&&i.createdCallback()}
  function y (line 1) | function y(E,w){var k=w||{};if(!E)throw new Error("document.registerElem...
  function h (line 1) | function h(E){if(!E.setAttribute._polyfilled){var w=E.setAttribute;E.set...
  function o (line 1) | function o(E,w,k){E=E.toLowerCase();var T=this.getAttribute(E);k.apply(t...
  function e (line 1) | function e(E){for(var w=0;w<S.length;w++)if(E===S[w])return!0}
  function a (line 1) | function a(E){var w=s(E);return w?a(w.extends).concat([w]):[]}
  function d (line 1) | function d(E){for(var w,k=E.extends,T=0;w=E.ancestry[T];T++)k=w.is&&w.ta...
  function i (line 1) | function i(E){if(!Object.__proto__){var w=HTMLElement.prototype;if(E.is)...
  function u (line 1) | function u(E){return f(D(E.tag),E)}
  function s (line 1) | function s(E){return E?L[E.toLowerCase()]:void 0}
  function n (line 1) | function n(E,w){L[E]=w}
  function p (line 1) | function p(E){return function(){return u(E)}}
  function c (line 1) | function c(E,w,k){return E===O?v(w,k):R(E,w)}
  function v (line 1) | function v(E,w){E&&(E=E.toLowerCase()),w&&(w=w.toLowerCase());var k=s(w|...
  function t (line 1) | function t(E,w){var k=E[w];E[w]=function(){var T=k.apply(this,arguments)...
  function y (line 1) | function y(){a(window.wrap(document)),window.CustomElements.ready=!0;var...
  function x (line 1) | function x(){}
  function o (line 1) | function o(){this.constructor=y}
  function h (line 1) | function h(){this.id=++o}
  function e (line 2) | function e(){this.constructor=h}
  function o (line 2) | function o(s){s==null&&(s={}),this.values=a(s),o.__super__.constructor.a...
  function x (line 2) | function x(b,y){var h,o;this.objects=b??[],o=y.depth,h=y.asTree,h&&(this...
  function o (line 2) | function o(){this.constructor=y}
  function h (line 2) | function h(o){var e,a,d,i,u;for(o==null&&(o=[]),this.objects={},d=0,i=o....
  function x (line 2) | function x(y){this.reset(y)}
  function o (line 2) | function o(){this.constructor=y}
  function h (line 2) | function h(){return h.__super__.constructor.apply(this,arguments)}
  function u (line 2) | function u(){this.constructor=d}
  function i (line 2) | function i(u,s){this.ucs2String=u,this.codepoints=s,this.length=this.cod...
  function e (line 60) | function e(){this.constructor=h}
  function o (line 60) | function o(e,a){this.object=e,this.options=a??{},this.childViews=[],this...
  function o (line 60) | function o(){this.constructor=y}
  function h (line 60) | function h(){h.__super__.constructor.apply(this,arguments),this.objectGr...
  function o (line 60) | function o(){this.constructor=y}
  function h (line 60) | function h(){return h.__super__.constructor.apply(this,arguments)}
  function p (line 60) | function p(){this.constructor=s}
  function n (line 60) | function n(r){this.element=r,this.didMutate=a(this.didMutate,this),this....
  function o (line 62) | function o(){this.constructor=y}
  function h (line 62) | function h(o){this.file=o}
  function a (line 62) | function a(){this.constructor=o}
  function e (line 62) | function e(a){var d;this.element=a,this.mutationObserver=new g.MutationO...
  function A (line 62) | function A(){this.constructor=r}
  function l (line 62) | function l(){l.__super__.constructor.apply(this,arguments),this.resetInp...
  function l (line 67) | function l(A){var f;this.inputController=A,f=this.inputController,this.r...
  function u (line 67) | function u(){this.constructor=d}
  function i (line 67) | function i(){return this.render=h(this.render,this),i.__super__.construc...
  function c (line 68) | function c(){this.constructor=n}
  function p (line 68) | function p(v,t,r,l){this.attachmentPiece=v,this.element=t,this.container...
  function d (line 68) | function d(){this.constructor=e}
  function a (line 68) | function a(){a.__super__.constructor.apply(this,arguments),this.attachme...
  function e (line 68) | function e(){this.constructor=h}
  function o (line 68) | function o(){o.__super__.constructor.apply(this,arguments),this.attachme...
  function d (line 68) | function d(){this.constructor=e}
  function a (line 68) | function a(){var i;a.__super__.constructor.apply(this,arguments),this.pi...
  function o (line 69) | function o(){this.constructor=y}
  function h (line 69) | function h(){h.__super__.constructor.apply(this,arguments),this.text=thi...
  function d (line 69) | function d(){this.constructor=e}
  function a (line 69) | function a(){a.__super__.constructor.apply(this,arguments),this.block=th...
  function a (line 69) | function a(){this.constructor=o}
  function e (line 69) | function e(){e.__super__.constructor.apply(this,arguments),this.element=...
  function s (line 69) | function s(){this.constructor=i}
  function u (line 69) | function u(s,n){this.element=s,this.composition=n,this.didClickAttachmen...
  function i (line 69) | function i(){this.constructor=a}
  function d (line 69) | function d(f){this.element=f,this.didKeyDownDialogInput=h(this.didKeyDow...
  function o (line 69) | function o(){this.constructor=y}
  function h (line 69) | function h(o){this.url=o}
  function e (line 69) | function e(){this.constructor=h}
  function o (line 69) | function o(e){e==null&&(e={}),this.releaseFile=x(this.releaseFile,this),...
  function o (line 69) | function o(){this.constructor=y}
  function h (line 69) | function h(o,e){e==null&&(e={}),h.__super__.constructor.apply(this,argum...
  function o (line 69) | function o(){this.constructor=y}
  function h (line 69) | function h(o){this.attachment=o,h.__super__.constructor.apply(this,argum...
  function e (line 69) | function e(){this.constructor=h}
  function o (line 69) | function o(e){o.__super__.constructor.apply(this,arguments),this.string=...
  function a (line 70) | function a(){this.constructor=o}
  function e (line 70) | function e(u){u==null&&(u=[]),e.__super__.constructor.apply(this,argumen...
  function o (line 70) | function o(){this.constructor=y}
  function h (line 70) | function h(o){var e;o==null&&(o=[]),h.__super__.constructor.apply(this,a...
  function n (line 70) | function n(){this.constructor=u}
  function s (line 70) | function s(m,C){m==null&&(m=new g.Text),C==null&&(C=[]),s.__super__.cons...
  function u (line 74) | function u(){this.constructor=d}
  function i (line 74) | function i(c,v){var t;t=v??{},this.allowedAttributes=t.allowedAttributes...
  function r (line 74) | function r(){this.constructor=v}
  function t (line 74) | function t(w,k){this.html=w,this.referenceElement=(k??{}).referenceEleme...
  function s (line 80) | function s(){this.constructor=i}
  function u (line 80) | function u(n){n==null&&(n=[]),u.__super__.constructor.apply(this,argumen...
  function x (line 82) | function x(b){var y;this.composition=b,this.document=this.composition.do...
  function v (line 85) | function v(){this.constructor=p}
  function c (line 85) | function c(){this.document=new g.Document,this.attachments=[],this.curre...
  function o (line 90) | function o(){this.constructor=y}
  function h (line 90) | function h(e){this.composition=e,this.undoEntries=[],this.redoEntries=[]}
  function b (line 90) | function b(e){this.document=e.document,this.selectedRange=e.selectedRange}
  function b (line 92) | function b(h,o,e){this.composition=h,this.selectionManager=o,this.elemen...
  function o (line 92) | function o(){this.constructor=y}
  function h (line 92) | function h(o,e){var a;this.attachmentManager=o,this.attachment=e,a=this....
  function o (line 92) | function o(){this.constructor=y}
  function h (line 92) | function h(o){var e,a,d;for(o==null&&(o=[]),this.managedAttachments={},a...
  function n (line 92) | function n(r){this.element=r}
  function h (line 92) | function h(){}
  function d (line 92) | function d(){this.constructor=e}
  function a (line 92) | function a(){this.run=b(this.run,this),this.update=b(this.update,this),t...
  function t (line 92) | function t(){this.constructor=c}
  function v (line 92) | function v(t){this.element=t,this.selectionDidChange=s(this.selectionDid...
  function u (line 92) | function u(){this.constructor=d}
  function i (line 92) | function i(s){var n,p;this.editorElement=s.editorElement,n=s.document,p=...
  function ct (line 143) | function ct({state:I}){return{state:I,init:function(){this.$refs.trix?.e...

FILE: public/js/filament/forms/components/select.js
  function g (line 1) | function g(e,t){e===void 0&&(e="[data-choice]"),t===void 0&&(t={});var n...
  method options (line 1) | get options(){return w}
  method templates (line 1) | get templates(){return ne.default}
  function a (line 1) | function a(r){var c=r.element,l=r.type,O=r.classNames,L=r.position;this....
  function _ (line 1) | function _(h){var d=h.element,a=h.type,r=h.classNames;this.element=d,thi...
  function a (line 1) | function a(r){var c=r.element,l=r.type,O=r.classNames,L=r.preventPaste;t...
  function d (line 1) | function d(a){var r=a.element;this.element=r,this.scrollPos=this.element...
  function d (line 1) | function d(a){var r=a.element,c=a.classNames;if(this.element=r,this.clas...
  function O (line 1) | function O(){this.constructor=c}
  function c (line 1) | function c(l){var O=l.element,L=l.classNames,y=l.delimiter,D=r.call(this...
  function O (line 1) | function O(){this.constructor=c}
  function c (line 1) | function c(l){var O=l.element,L=l.classNames,y=l.template,D=r.call(this,...
  function _ (line 1) | function _(h,d){switch(h===void 0&&(h=i.defaultState),d===void 0&&(d={})...
  function _ (line 1) | function _(h,d){switch(h===void 0&&(h=i.defaultState),d===void 0&&(d={})...
  function _ (line 1) | function _(h,d){switch(h===void 0&&(h=i.defaultState),d===void 0&&(d={})...
  function c (line 1) | function c(){this._store=(0,d.createStore)(a.default,window.__REDUX_DEVT...
  function b (line 1) | function b(E){return!!E&&typeof E=="object"}
  function _ (line 1) | function _(E){var w=Object.prototype.toString.call(E);return w==="[objec...
  function a (line 1) | function a(E){return E.$$typeof===d}
  function r (line 1) | function r(E){return Array.isArray(E)?[]:{}}
  function c (line 1) | function c(E,w){return w.clone!==!1&&w.isMergeableObject(E)?Z(r(E),E,w):E}
  function l (line 1) | function l(E,w,N){return E.concat(w).map(function(g){return c(g,N)})}
  function O (line 1) | function O(E,w){if(!w.customMerge)return Z;var N=w.customMerge(E);return...
  function L (line 1) | function L(E){return Object.getOwnPropertySymbols?Object.getOwnPropertyS...
  function y (line 1) | function y(E){return Object.keys(E).concat(L(E))}
  function D (line 1) | function D(E,w){try{return w in E}catch{return!1}}
  function k (line 1) | function k(E,w){return D(E,w)&&!(Object.hasOwnProperty.call(E,w)&&Object...
  function Q (line 1) | function Q(E,w,N){var g={};return N.isMergeableObject(E)&&y(E).forEach(f...
  function Z (line 1) | function Z(E,w,N){N=N||{},N.arrayMerge=N.arrayMerge||l,N.isMergeableObje...
  function _ (line 1) | function _(p){return Array.isArray?Array.isArray(p):k(p)==="[object Arra...
  function d (line 1) | function d(p){if(typeof p=="string")return p;let o=p+"";return o=="0"&&1...
  function a (line 1) | function a(p){return p==null?"":d(p)}
  function r (line 1) | function r(p){return typeof p=="string"}
  function c (line 1) | function c(p){return typeof p=="number"}
  function l (line 1) | function l(p){return p===!0||p===!1||L(p)&&k(p)=="[object Boolean]"}
  function O (line 1) | function O(p){return typeof p=="object"}
  function L (line 1) | function L(p){return O(p)&&p!==null}
  function y (line 1) | function y(p){return p!=null}
  function D (line 1) | function D(p){return!p.trim().length}
  function k (line 1) | function k(p){return p==null?p===void 0?"[object Undefined]":"[object Nu...
  class e (line 1) | class e{constructor(o){this._keys=[],this._keyMap={};let m=0;o.forEach(S...
    method constructor (line 1) | constructor(o){this._keys=[],this._keyMap={};let m=0;o.forEach(S=>{let...
    method get (line 1) | get(o){return this._keyMap[o]}
    method keys (line 1) | keys(){return this._keys}
    method toJSON (line 1) | toJSON(){return JSON.stringify(this._keys)}
  function t (line 1) | function t(p){let o=null,m=null,S=null,I=1,T=null;if(r(p)||_(p))S=p,o=n(...
  function n (line 1) | function n(p){return _(p)?p:p.split(".")}
  function s (line 1) | function s(p){return _(p)?p.join("."):p}
  function v (line 1) | function v(p,o){let m=[],S=!1,I=(T,A,R)=>{if(y(T))if(!A[R])m.push(T);els...
  function Y (line 1) | function Y(p=1,o=3){let m=new Map,S=Math.pow(10,o);return{get(I){let T=I...
  class V (line 1) | class V{constructor({getFn:o=u.getFn,fieldNormWeight:m=u.fieldNormWeight...
    method constructor (line 1) | constructor({getFn:o=u.getFn,fieldNormWeight:m=u.fieldNormWeight}={}){...
    method setSources (line 1) | setSources(o=[]){this.docs=o}
    method setIndexRecords (line 1) | setIndexRecords(o=[]){this.records=o}
    method setKeys (line 1) | setKeys(o=[]){this.keys=o,this._keysMap={},o.forEach((m,S)=>{this._key...
    method create (line 1) | create(){this.isCreated||!this.docs.length||(this.isCreated=!0,r(this....
    method add (line 1) | add(o){let m=this.size();r(o)?this._addString(o,m):this._addObject(o,m)}
    method removeAt (line 1) | removeAt(o){this.records.splice(o,1);for(let m=o,S=this.size();m<S;m+=...
    method getValueForItemAtKeyId (line 1) | getValueForItemAtKeyId(o,m){return o[this._keysMap[m]]}
    method size (line 1) | size(){return this.records.length}
    method _addString (line 1) | _addString(o,m){if(!y(o)||D(o))return;let S={v:o,i:m,n:this.norm.get(o...
    method _addObject (line 1) | _addObject(o,m){let S={i:m,$:{}};this.keys.forEach((I,T)=>{let A=I.get...
    method toJSON (line 1) | toJSON(){return{keys:this.keys,records:this.records}}
  function U (line 1) | function U(p,o,{getFn:m=u.getFn,fieldNormWeight:S=u.fieldNormWeight}={})...
  function $ (line 1) | function $(p,{getFn:o=u.getFn,fieldNormWeight:m=u.fieldNormWeight}={}){l...
  function W (line 1) | function W(p,{errors:o=0,currentLocation:m=0,expectedLocation:S=0,distan...
  function J (line 1) | function J(p=[],o=u.minMatchCharLength){let m=[],S=-1,I=-1,T=0;for(let A...
  function ee (line 1) | function ee(p,o,m,{location:S=u.location,distance:I=u.distance,threshold...
  function ae (line 1) | function ae(p){let o={};for(let m=0,S=p.length;m<S;m+=1){let I=p.charAt(...
  class ce (line 1) | class ce{constructor(o,{location:m=u.location,threshold:S=u.threshold,di...
    method constructor (line 1) | constructor(o,{location:m=u.location,threshold:S=u.threshold,distance:...
    method searchIn (line 1) | searchIn(o){let{isCaseSensitive:m,includeMatches:S}=this.options;if(m|...
  class le (line 1) | class le{constructor(o){this.pattern=o}static isMultiMatch(o){return _e(...
    method constructor (line 1) | constructor(o){this.pattern=o}
    method isMultiMatch (line 1) | static isMultiMatch(o){return _e(o,this.multiRegex)}
    method isSingleMatch (line 1) | static isSingleMatch(o){return _e(o,this.singleRegex)}
    method search (line 1) | search(){}
  function _e (line 1) | function _e(p,o){let m=p.match(o);return m?m[1]:null}
  class te (line 1) | class te extends le{constructor(o){super(o)}static get type(){return"exa...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^="(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^=(.*)$/}
    method search (line 1) | search(o){let m=o===this.pattern;return{isMatch:m,score:m?0:1,indices:...
  class de (line 1) | class de extends le{constructor(o){super(o)}static get type(){return"inv...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"inverse-exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^!"(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^!(.*)$/}
    method search (line 1) | search(o){let S=o.indexOf(this.pattern)===-1;return{isMatch:S,score:S?...
  class pe (line 1) | class pe extends le{constructor(o){super(o)}static get type(){return"pre...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"prefix-exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^\^"(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^\^(.*)$/}
    method search (line 1) | search(o){let m=o.startsWith(this.pattern);return{isMatch:m,score:m?0:...
  class oe (line 1) | class oe extends le{constructor(o){super(o)}static get type(){return"inv...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"inverse-prefix-exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^!\^"(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^!\^(.*)$/}
    method search (line 1) | search(o){let m=!o.startsWith(this.pattern);return{isMatch:m,score:m?0...
  class Te (line 1) | class Te extends le{constructor(o){super(o)}static get type(){return"suf...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"suffix-exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^"(.*)"\$$/}
    method singleRegex (line 1) | static get singleRegex(){return/^(.*)\$$/}
    method search (line 1) | search(o){let m=o.endsWith(this.pattern);return{isMatch:m,score:m?0:1,...
  class Pe (line 1) | class Pe extends le{constructor(o){super(o)}static get type(){return"inv...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"inverse-suffix-exact"}
    method multiRegex (line 1) | static get multiRegex(){return/^!"(.*)"\$$/}
    method singleRegex (line 1) | static get singleRegex(){return/^!(.*)\$$/}
    method search (line 1) | search(o){let m=!o.endsWith(this.pattern);return{isMatch:m,score:m?0:1...
  class He (line 1) | class He extends le{constructor(o,{location:m=u.location,threshold:S=u.t...
    method constructor (line 1) | constructor(o,{location:m=u.location,threshold:S=u.threshold,distance:...
    method type (line 1) | static get type(){return"fuzzy"}
    method multiRegex (line 1) | static get multiRegex(){return/^"(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^(.*)$/}
    method search (line 1) | search(o){return this._bitapSearch.searchIn(o)}
  class Be (line 1) | class Be extends le{constructor(o){super(o)}static get type(){return"inc...
    method constructor (line 1) | constructor(o){super(o)}
    method type (line 1) | static get type(){return"include"}
    method multiRegex (line 1) | static get multiRegex(){return/^'"(.*)"$/}
    method singleRegex (line 1) | static get singleRegex(){return/^'(.*)$/}
    method search (line 1) | search(o){let m=0,S,I=[],T=this.pattern.length;for(;(S=o.indexOf(this....
  function Qe (line 1) | function Qe(p,o={}){return p.split(Je).map(m=>{let S=m.trim().split(Xe)....
  class qe (line 1) | class qe{constructor(o,{isCaseSensitive:m=u.isCaseSensitive,includeMatch...
    method constructor (line 1) | constructor(o,{isCaseSensitive:m=u.isCaseSensitive,includeMatches:S=u....
    method condition (line 1) | static condition(o,m){return m.useExtendedSearch}
    method searchIn (line 1) | searchIn(o){let m=this.query;if(!m)return{isMatch:!1,score:1};let{incl...
  function et (line 1) | function et(...p){De.push(...p)}
  function Ne (line 1) | function Ne(p,o){for(let m=0,S=De.length;m<S;m+=1){let I=De[m];if(I.cond...
  function xe (line 1) | function xe(p,o,{auto:m=!0}={}){let S=I=>{let T=Object.keys(I),A=tt(I);i...
  function nt (line 1) | function nt(p,{ignoreFieldNorm:o=u.ignoreFieldNorm}){p.forEach(m=>{let S...
  function rt (line 1) | function rt(p,o){let m=p.matches;o.matches=[],y(m)&&m.forEach(S=>{if(!y(...
  function st (line 1) | function st(p,o){o.score=p.score}
  function ot (line 1) | function ot(p,o,{includeMatches:m=u.includeMatches,includeScore:S=u.incl...
  class Se (line 1) | class Se{constructor(o,m={},S){this.options={...u,...m},this.options.use...
    method constructor (line 1) | constructor(o,m={},S){this.options={...u,...m},this.options.useExtende...
    method setCollection (line 1) | setCollection(o,m){if(this._docs=o,m&&!(m instanceof V))throw new Erro...
    method add (line 1) | add(o){y(o)&&(this._docs.push(o),this._myIndex.add(o))}
    method remove (line 1) | remove(o=()=>!1){let m=[];for(let S=0,I=this._docs.length;S<I;S+=1){le...
    method removeAt (line 1) | removeAt(o){this._docs.splice(o,1),this._myIndex.removeAt(o)}
    method getIndex (line 1) | getIndex(){return this._myIndex}
    method search (line 1) | search(o,{limit:m=-1}={}){let{includeMatches:S,includeScore:I,shouldSo...
    method _searchStringList (line 1) | _searchStringList(o){let m=Ne(o,this.options),{records:S}=this._myInde...
    method _searchLogical (line 1) | _searchLogical(o){let m=xe(o,this.options),S=(R,F,H)=>{if(!R.children)...
    method _searchObjectList (line 1) | _searchObjectList(o){let m=Ne(o,this.options),{keys:S,records:I}=this....
    method _findMatches (line 1) | _findMatches({key:o,value:m,searcher:S}){if(!y(m))return[];let I=[];if...
  function _ (line 1) | function _(f){"@babel/helpers - typeof";return _=typeof Symbol=="functio...
  function h (line 1) | function h(f,u){if(_(f)!=="object"||f===null)return f;var C=f[Symbol.toP...
  function d (line 1) | function d(f){var u=h(f,"string");return _(u)==="symbol"?u:String(u)}
  function a (line 1) | function a(f,u,C){return u=d(u),u in f?Object.defineProperty(f,u,{value:...
  function r (line 1) | function r(f,u){var C=Object.keys(f);if(Object.getOwnPropertySymbols){va...
  function c (line 1) | function c(f){for(var u=1;u<arguments.length;u++){var C=arguments[u]!=nu...
  function l (line 1) | function l(f){return"Minified Redux error #"+f+"; visit https://redux.js...
  function D (line 1) | function D(f){if(typeof f!="object"||f===null)return!1;for(var u=f;Objec...
  function k (line 1) | function k(f){if(f===void 0)return"undefined";if(f===null)return"null";v...
  function Q (line 1) | function Q(f){return typeof f.constructor=="function"?f.constructor.name...
  function Z (line 1) | function Z(f){return f instanceof Error||typeof f.message=="string"&&f.c...
  function ne (line 1) | function ne(f){return f instanceof Date?!0:typeof f.toDateString=="funct...
  function E (line 1) | function E(f){var u=typeof f;return u}
  function w (line 1) | function w(f,u,C){var Y;if(typeof u=="function"&&typeof C=="function"||t...
  function g (line 1) | function g(f){typeof console<"u"&&typeof console.error=="function"&&cons...
  function e (line 1) | function e(f,u,C,Y){var V=Object.keys(u),U=C&&C.type===y.INIT?"preloaded...
    method constructor (line 1) | constructor(o){this._keys=[],this._keyMap={};let m=0;o.forEach(S=>{let...
    method get (line 1) | get(o){return this._keyMap[o]}
    method keys (line 1) | keys(){return this._keys}
    method toJSON (line 1) | toJSON(){return JSON.stringify(this._keys)}
  function t (line 1) | function t(f){Object.keys(f).forEach(function(u){var C=f[u],Y=C(void 0,{...
  function n (line 1) | function n(f){for(var u=Object.keys(f),C={},Y=0;Y<u.length;Y++){var V=u[...
  function s (line 1) | function s(f,u){return function(){return u(f.apply(this,arguments))}}
  function v (line 1) | function v(f,u){if(typeof f=="function")return s(f,u);if(typeof f!="obje...
  function P (line 1) | function P(){for(var f=arguments.length,u=new Array(f),C=0;C<f;C++)u[C]=...
  function M (line 1) | function M(){for(var f=arguments.length,u=new Array(f),C=0;C<f;C++)u[C]=...
  function K (line 1) | function K(){}
  function X (line 1) | function X(j){var i=ie[j];if(i!==void 0)return i.exports;var b=ie[j]={ex...
  function vt (line 1) | function vt({canSelectPlaceholder:se,isHtmlAllowed:ie,getOptionLabelUsin...

FILE: public/js/filament/forms/components/tags-input.js
  function i (line 1) | function i({state:a,splitKeys:n}){return{newTag:"",state:a,createTag:fun...

FILE: public/js/filament/forms/components/textarea.js
  function t (line 1) | function t({initialHeight:e}){return{init:function(){this.render()},rend...

FILE: public/js/filament/notifications/notifications.js
  function K (line 1) | function K(i,t){var e=t||0,s=P;return s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[...
  function tt (line 1) | function tt(i,t,e){var s=t&&e||0,n=t||[];i=i||{};var r=i.clockseq!==void...
  function st (line 1) | function st(i,t,e){var s=t&&e||0;typeof i=="string"&&(t=i=="binary"?new ...
  function k (line 1) | function k(i,t=()=>{}){let e=!1;return function(){e?t.apply(this,argumen...
  method constructor (line 1) | constructor(){return this.id((0,L.v4)()),this}
  method id (line 1) | id(t){return this.id=t,this}
  method title (line 1) | title(t){return this.title=t,this}
  method body (line 1) | body(t){return this.body=t,this}
  method actions (line 1) | actions(t){return this.actions=t,this}
  method status (line 1) | status(t){return this.status=t,this}
  method color (line 1) | color(t){return this.color=t,this}
  method icon (line 1) | icon(t){return this.icon=t,this}
  method iconColor (line 1) | iconColor(t){return this.iconColor=t,this}
  method duration (line 1) | duration(t){return this.duration=t,this}
  method seconds (line 1) | seconds(t){return this.duration(t*1e3),this}
  method persistent (line 1) | persistent(){return this.duration("persistent"),this}
  method danger (line 1) | danger(){return this.status("danger"),this}
  method info (line 1) | info(){return this.status("info"),this}
  method success (line 1) | success(){return this.status("success"),this}
  method warning (line 1) | warning(){return this.status("warning"),this}
  method view (line 1) | view(t){return this.view=t,this}
  method viewData (line 1) | viewData(t){return this.viewData=t,this}
  method send (line 1) | send(){return window.dispatchEvent(new CustomEvent("notificationSent",{d...
  method constructor (line 1) | constructor(t){return this.name(t),this}
  method name (line 1) | name(t){return this.name=t,this}
  method color (line 1) | color(t){return this.color=t,this}
  method dispatch (line 1) | dispatch(t,e){return this.event(t),this.eventData(e),this}
  method dispatchSelf (line 1) | dispatchSelf(t,e){return this.dispatch(t,e),this.dispatchDirection="self...
  method dispatchTo (line 1) | dispatchTo(t,e,s){return this.dispatch(e,s),this.dispatchDirection="to",...
  method emit (line 1) | emit(t,e){return this.dispatch(t,e),this}
  method emitSelf (line 1) | emitSelf(t,e){return this.dispatchSelf(t,e),this}
  method emitTo (line 1) | emitTo(t,e,s){return this.dispatchTo(t,e,s),this}
  method dispatchDirection (line 1) | dispatchDirection(t){return this.dispatchDirection=t,this}
  method dispatchToComponent (line 1) | dispatchToComponent(t){return this.dispatchToComponent=t,this}
  method event (line 1) | event(t){return this.event=t,this}
  method eventData (line 1) | eventData(t){return this.eventData=t,this}
  method extraAttributes (line 1) | extraAttributes(t){return this.extraAttributes=t,this}
  method icon (line 1) | icon(t){return this.icon=t,this}
  method iconPosition (line 1) | iconPosition(t){return this.iconPosition=t,this}
  method outlined (line 1) | outlined(t=!0){return this.isOutlined=t,this}
  method disabled (line 1) | disabled(t=!0){return this.isDisabled=t,this}
  method label (line 1) | label(t){return this.label=t,this}
  method close (line 1) | close(t=!0){return this.shouldClose=t,this}
  method openUrlInNewTab (line 1) | openUrlInNewTab(t=!0){return this.shouldOpenUrlInNewTab=t,this}
  method size (line 1) | size(t){return this.size=t,this}
  method url (line 1) | url(t){return this.url=t,this}
  method view (line 1) | view(t){return this.view=t,this}
  method button (line 1) | button(){return this.view("filament-actions::button-action"),this}
  method grouped (line 1) | grouped(){return this.view("filament-actions::grouped-action"),this}
  method link (line 1) | link(){return this.view("filament-actions::link-action"),this}
  method constructor (line 1) | constructor(t){return this.actions(t),this}
  method actions (line 1) | actions(t){return this.actions=t.map(e=>e.grouped()),this}
  method color (line 1) | color(t){return this.color=t,this}
  method icon (line 1) | icon(t){return this.icon=t,this}
  method iconPosition (line 1) | iconPosition(t){return this.iconPosition=t,this}
  method label (line 1) | label(t){return this.label=t,this}
  method tooltip (line 1) | tooltip(t){return this.tooltip=t,this}

FILE: public/js/filament/support/async-alpine.js
  function P (line 1) | function P(t){let e=q(t),i=u(e);return i.type==="method"?{type:"expressi...
  function q (line 1) | function q(t){let e=/\s*([()])\s*|\s*(\|\||&&|\|)\s*|\s*((?:[^()&|]+\([^...
  function u (line 1) | function u(t){let e=h(t);for(;t.length>0&&(t[0].value==="&&"||t[0].value...
  function h (line 1) | function h(t){if(t[0].value==="("){t.shift();let e=u(t);return t[0].valu...
  method _index (line 1) | get _index(){return this._realIndex++}
  method init (line 1) | init(t,e={}){return this.Alpine=t,this._options={...this._options,...e},...
  method start (line 1) | start(){return this._processInline(),this._setupComponents(),this._mutat...
  method data (line 1) | data(t,e=!1){return this._data[t]={loaded:!1,download:e},this}
  method url (line 1) | url(t,e){!t||!e||(this._data[t]||this.data(t),this._data[t].download=()=...
  method alias (line 1) | alias(t){this._alias=t}
  method _processInline (line 1) | _processInline(){let t=document.querySelectorAll(`[${this._options.prefi...
  method _inlineElement (line 1) | _inlineElement(t){let e=t.getAttribute(`${this._options.alpinePrefix}dat...
  method _setupComponents (line 1) | _setupComponents(){let t=document.querySelectorAll(`[${this._options.pre...
  method _setupComponent (line 1) | _setupComponent(t){let e=t.getAttribute(`${this._options.alpinePrefix}da...
  method _componentStrategy (line 1) | async _componentStrategy(t){let e=P(t.strategy);await this._generateRequ...
  method _generateRequirements (line 1) | _generateRequirements(t,e){if(e.type==="expression"){if(e.operator==="&&...
  method _download (line 1) | async _download(t){if(t.startsWith(_)||(this._handleAlias(t),!this._data...
  method _getModule (line 1) | async _getModule(t){if(!this._data[t])return;let e=await this._data[t].d...
  method _activate (line 1) | _activate(t){this.Alpine.destroyTree(t.el),t.el.removeAttribute(`${this....
  method _mutations (line 1) | _mutations(){new MutationObserver(t=>{for(let e of t)if(e.addedNodes)for...
  method _mutationEl (line 1) | _mutationEl(t){t.hasAttribute(`${this._options.prefix}${this._options.in...
  method _handleAlias (line 1) | _handleAlias(t){if(!(!this._alias||this._data[t])){if(typeof this._alias...
  method _parseName (line 1) | _parseName(t){return(t||"").split(/[({]/g)[0]||`${_}${this._index}`}
  method _parseUrl (line 1) | _parseUrl(t){return new RegExp("^(?:[a-z+]+:)?//","i").test(t)?t:new URL...

FILE: public/js/filament/support/support.js
  function U (line 1) | function U(s){if(s)O[0]=O[16]=O[1]=O[2]=O[3]=O[4]=O[5]=O[6]=O[7]=O[8]=O[...
  function Z (line 1) | function Z(s,p){var v,d=K(s);if(s=d[0],d[1]){var N=[],_=s.length,M=0,Q;f...
  function Jr (line 1) | function Jr(t,e,r){return tt(t,Et(e,r))}
  function jt (line 1) | function jt(t,e){return typeof t=="function"?t(e):t}
  function pt (line 1) | function pt(t){return t.split("-")[0]}
  function xt (line 1) | function xt(t){return t.split("-")[1]}
  function Bi (line 1) | function Bi(t){return t==="x"?"y":"x"}
  function Zr (line 1) | function Zr(t){return t==="y"?"height":"width"}
  function Pn (line 1) | function Pn(t){return["top","bottom"].includes(pt(t))?"y":"x"}
  function Qr (line 1) | function Qr(t){return Bi(Pn(t))}
  function Hi (line 1) | function Hi(t,e,r){r===void 0&&(r=!1);let n=xt(t),i=Qr(t),o=Zr(i),l=i===...
  function Xo (line 1) | function Xo(t){let e=mr(t);return[vr(t),e,vr(e)]}
  function vr (line 1) | function vr(t){return t.replace(/start|end/g,e=>Yo[e])}
  function qo (line 1) | function qo(t,e,r){let n=["left","right"],i=["right","left"],o=["top","b...
  function Go (line 1) | function Go(t,e,r,n){let i=xt(t),o=qo(pt(t),r==="start",n);return i&&(o=...
  function mr (line 1) | function mr(t){return t.replace(/left|right|bottom|top/g,e=>Uo[e])}
  function Ko (line 1) | function Ko(t){return{top:0,right:0,bottom:0,left:0,...t}}
  function ei (line 1) | function ei(t){return typeof t!="number"?Ko(t):{top:t,right:t,bottom:t,l...
  function Dn (line 1) | function Dn(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y...
  function Pi (line 1) | function Pi(t,e,r){let{reference:n,floating:i}=t,o=Pn(e),l=Qr(e),h=Zr(l)...
  function Tn (line 1) | async function Tn(t,e){var r;e===void 0&&(e={});let{x:n,y:i,platform:o,r...
  method fn (line 1) | async fn(e){let{x:r,y:n,placement:i,rects:o,platform:l,elements:h,middle...
  function Qo (line 1) | function Qo(t,e,r){return(t?[...r.filter(i=>xt(i)===t),...r.filter(i=>xt...
  method fn (line 1) | async fn(e){var r,n,i;let{rects:o,middlewareData:l,placement:h,platform:...
  method fn (line 1) | async fn(e){var r,n;let{placement:i,middlewareData:o,rects:l,initialPlac...
  function Mi (line 1) | function Mi(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:...
  function Ri (line 1) | function Ri(t){return ji.some(e=>t[e]>=0)}
  method fn (line 1) | async fn(e){let{rects:r}=e,{strategy:n="referenceHidden",...i}=jt(t,e);s...
  function $i (line 1) | function $i(t){let e=Et(...t.map(o=>o.left)),r=Et(...t.map(o=>o.top)),n=...
  function ra (line 1) | function ra(t){let e=t.slice().sort((i,o)=>i.y-o.y),r=[],n=null;for(let ...
  method fn (line 1) | async fn(e){let{placement:r,elements:n,rects:i,platform:o,strategy:l}=e,...
  function oa (line 1) | async function oa(t,e){let{placement:r,platform:n,elements:i}=t,o=await(...
  method fn (line 1) | async fn(e){var r,n;let{x:i,y:o,placement:l,middlewareData:h}=e,u=await ...
  method fn (line 1) | async fn(e){let{x:r,y:n,placement:i}=e,{mainAxis:o=!0,crossAxis:l=!1,lim...
  method fn (line 1) | async fn(e){let{placement:r,rects:n,platform:i,elements:o}=e,{apply:l=()...
  function rn (line 1) | function rn(t){return Vi(t)?(t.nodeName||"").toLowerCase():"#document"}
  function lt (line 1) | function lt(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e....
  function Bt (line 1) | function Bt(t){var e;return(e=(Vi(t)?t.ownerDocument:t.document)||window...
  function Vi (line 1) | function Vi(t){return t instanceof Node||t instanceof lt(t).Node}
  function kt (line 1) | function kt(t){return t instanceof Element||t instanceof lt(t).Element}
  function _t (line 1) | function _t(t){return t instanceof HTMLElement||t instanceof lt(t).HTMLE...
  function Ii (line 1) | function Ii(t){return typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||...
  function Un (line 1) | function Un(t){let{overflow:e,overflowX:r,overflowY:n,display:i}=ht(t);r...
  function la (line 1) | function la(t){return["table","td","th"].includes(rn(t))}
  function ti (line 1) | function ti(t){let e=ni(),r=ht(t);return r.transform!=="none"||r.perspec...
  function ca (line 1) | function ca(t){let e=_n(t);for(;_t(e)&&!gr(e);){if(ti(e))return e;e=_n(e...
  function ni (line 1) | function ni(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-web...
  function gr (line 1) | function gr(t){return["html","body","#document"].includes(rn(t))}
  function ht (line 1) | function ht(t){return lt(t).getComputedStyle(t)}
  function br (line 1) | function br(t){return kt(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollT...
  function _n (line 1) | function _n(t){if(rn(t)==="html")return t;let e=t.assignedSlot||t.parent...
  function zi (line 1) | function zi(t){let e=_n(t);return gr(e)?t.ownerDocument?t.ownerDocument....
  function zn (line 1) | function zn(t,e,r){var n;e===void 0&&(e=[]),r===void 0&&(r=!0);let i=zi(...
  function Ui (line 1) | function Ui(t){let e=ht(t),r=parseFloat(e.width)||0,n=parseFloat(e.heigh...
  function ri (line 1) | function ri(t){return kt(t)?t:t.contextElement}
  function Cn (line 1) | function Cn(t){let e=ri(t);if(!_t(e))return nn(1);let r=e.getBoundingCli...
  function Yi (line 1) | function Yi(t){let e=lt(t);return!ni()||!e.visualViewport?fa:{x:e.visual...
  function ua (line 1) | function ua(t,e,r){return e===void 0&&(e=!1),!r||e&&r!==lt(t)?!1:e}
  function vn (line 1) | function vn(t,e,r,n){e===void 0&&(e=!1),r===void 0&&(r=!1);let i=t.getBo...
  function Xi (line 1) | function Xi(t){return da.some(e=>{try{return t.matches(e)}catch{return!1...
  function pa (line 1) | function pa(t){let{elements:e,rect:r,offsetParent:n,strategy:i}=t,o=i===...
  function ha (line 1) | function ha(t){return Array.from(t.getClientRects())}
  function qi (line 1) | function qi(t){return vn(Bt(t)).left+br(t).scrollLeft}
  function va (line 1) | function va(t){let e=Bt(t),r=br(t),n=t.ownerDocument.body,i=tt(e.scrollW...
  function ma (line 1) | function ma(t,e){let r=lt(t),n=Bt(t),i=r.visualViewport,o=n.clientWidth,...
  function ga (line 1) | function ga(t,e){let r=vn(t,!0,e==="fixed"),n=r.top+t.clientTop,i=r.left...
  function Fi (line 1) | function Fi(t,e,r){let n;if(e==="viewport")n=ma(t,r);else if(e==="docume...
  function Gi (line 1) | function Gi(t,e){let r=_n(t);return r===e||!kt(r)||gr(r)?!1:ht(r).positi...
  function ba (line 1) | function ba(t,e){let r=e.get(t);if(r)return r;let n=zn(t,[],!1).filter(h...
  function ya (line 1) | function ya(t){let{element:e,boundary:r,rootBoundary:n,strategy:i}=t,l=[...
  function wa (line 1) | function wa(t){let{width:e,height:r}=Ui(t);return{width:e,height:r}}
  function xa (line 1) | function xa(t,e,r){let n=_t(e),i=Bt(e),o=r==="fixed",l=vn(t,!0,o,e),h={s...
  function Li (line 1) | function Li(t,e){return!_t(t)||ht(t).position==="fixed"?null:e?e(t):t.of...
  function Ki (line 1) | function Ki(t,e){let r=lt(t);if(!_t(t)||Xi(t))return r;let n=Li(t,e);for...
  function Oa (line 1) | function Oa(t){return ht(t).direction==="rtl"}
  function Aa (line 1) | function Aa(t,e){let r=null,n,i=Bt(t);function o(){var h;clearTimeout(n)...
  function Ni (line 1) | function Ni(t,e,r,n){n===void 0&&(n={});let{ancestorScroll:i=!0,ancestor...
  method apply (line 1) | apply({availableWidth:l,availableHeight:h,elements:u}){Object.assign(u.f...
  function _a (line 1) | function _a(t,e=()=>{}){let r=!1;return function(){r?e.apply(this,argume...
  function Pa (line 1) | function Pa(t){let e={dismissable:!0,trap:!1};function r(n,i=null){if(n)...
  function Ma (line 1) | function Ma(t){t.store("lazyLoadedAssets",{loaded:new Set,check(l){retur...
  function lo (line 1) | function lo(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){v...
  function Mt (line 1) | function Mt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=n...
  function Sr (line 1) | function Sr(t){"@babel/helpers - typeof";return typeof Symbol=="function...
  function Ra (line 1) | function Ra(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enum...
  function $t (line 1) | function $t(){return $t=Object.assign||function(t){for(var e=1;e<argumen...
  function Ia (line 1) | function Ia(t,e){if(t==null)return{};var r={},n=Object.keys(t),i,o;for(o...
  function Fa (line 1) | function Fa(t,e){if(t==null)return{};var r=Ia(t,e),n,i;if(Object.getOwnP...
  function Ht (line 1) | function Ht(t){if(typeof window<"u"&&window.navigator)return!!navigator....
  function Ce (line 1) | function Ce(t,e,r){t.addEventListener(e,r,!Wt&&wo)}
  function Oe (line 1) | function Oe(t,e,r){t.removeEventListener(e,r,!Wt&&wo)}
  function _r (line 1) | function _r(t,e){if(e){if(e[0]===">"&&(e=e.substring(1)),t)try{if(t.matc...
  function Na (line 1) | function Na(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.par...
  function St (line 1) | function St(t,e,r,n){if(t){r=r||document;do{if(e!=null&&(e[0]===">"?t.pa...
  function ct (line 1) | function ct(t,e,r){if(t&&e)if(t.classList)t.classList[r?"add":"remove"](...
  function ae (line 1) | function ae(t,e,r){var n=t&&t.style;if(n){if(r===void 0)return document....
  function Ln (line 1) | function Ln(t,e){var r="";if(typeof t=="string")r=t;else do{var n=ae(t,"...
  function xo (line 1) | function xo(t,e,r){if(t){var n=t.getElementsByTagName(e),i=0,o=n.length;...
  function Pt (line 1) | function Pt(){var t=document.scrollingElement;return t||document.documen...
  function qe (line 1) | function qe(t,e,r,n,i){if(!(!t.getBoundingClientRect&&t!==window)){var o...
  function uo (line 1) | function uo(t,e,r){for(var n=sn(t,!0),i=qe(t)[e];n;){var o=qe(n)[r],l=vo...
  function Nn (line 1) | function Nn(t,e,r,n){for(var i=0,o=0,l=t.children;o<l.length;){if(l[o].s...
  function bi (line 1) | function bi(t,e){for(var r=t.lastElementChild;r&&(r===se.ghost||ae(r,"di...
  function vt (line 1) | function vt(t,e){var r=0;if(!t||!t.parentNode)return-1;for(;t=t.previous...
  function po (line 1) | function po(t){var e=0,r=0,n=Pt();if(t)do{var i=Ln(t),o=i.a,l=i.d;e+=t.s...
  function ka (line 1) | function ka(t,e){for(var r in t)if(t.hasOwnProperty(r)){for(var n in e)i...
  function sn (line 1) | function sn(t,e){if(!t||!t.getBoundingClientRect)return Pt();var r=t,n=!...
  function ja (line 1) | function ja(t,e){if(t&&e)for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])...
  function oi (line 1) | function oi(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.roun...
  function Eo (line 1) | function Eo(t,e){return function(){if(!Kn){var r=arguments,n=this;r.leng...
  function Ba (line 1) | function Ba(){clearTimeout(Kn),Kn=void 0}
  function Oo (line 1) | function Oo(t,e,r){t.scrollLeft+=e,t.scrollTop+=r}
  function So (line 1) | function So(t){var e=window.Polymer,r=window.jQuery||window.Zepto;return...
  function Ao (line 1) | function Ao(t,e,r){var n={};return Array.from(t.children).forEach(functi...
  function Ha (line 1) | function Ha(){var t=[],e;return{captureAnimationState:function(){if(t=[]...
  function $a (line 1) | function $a(t){return t.offsetWidth}
  function Wa (line 1) | function Wa(t,e,r,n){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e...
  function Va (line 1) | function Va(t){var e=t.sortable,r=t.rootEl,n=t.name,i=t.targetEl,o=t.clo...
  function it (line 1) | function it(t){Va(Mt({putSortable:Ze,cloneEl:We,targetEl:L,rootEl:ke,old...
  function r (line 1) | function r(o,l){return function(h,u,f,y){var b=h.options.group.name&&u.o...
  function se (line 1) | function se(t,e){if(!(t&&t.nodeType&&t.nodeType===1))throw"Sortable: `el...
  function R (line 1) | function R(M,Q){at(M,O,Mt({evt:e,isOwner:y,axis:E?"vertical":"horizontal...
  function $ (line 1) | function $(){R("dragOverAnimationCapture"),O.captureAnimationState(),O!=...
  function B (line 1) | function B(M){return R("dragOverCompleted",{insertion:M}),M&&(y?f._hideC...
  function K (line 1) | function K(){ft=vt(L),on=vt(L,h.draggable),it({sortable:O,name:"change",...
  function Ga (line 1) | function Ga(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.canc...
  function Or (line 1) | function Or(t,e,r,n,i,o,l,h){var u,f=t[ut],y=f.options.onMove,b;return w...
  function fi (line 1) | function fi(t){t.draggable=!1}
  function Ka (line 1) | function Ka(){hi=!1}
  function Ja (line 1) | function Ja(t,e,r){var n=qe(Nn(r.el,0,r.options,!0)),i=Ao(r.el,r.options...
  function Za (line 1) | function Za(t,e,r){var n=qe(bi(r.el,r.options.draggable)),i=Ao(r.el,r.op...
  function Qa (line 1) | function Qa(t,e,r,n,i,o,l,h){var u=n?t.clientY:t.clientX,f=n?r.height:r....
  function es (line 1) | function es(t){return vt(L)<vt(t)?1:-1}
  function ts (line 1) | function ts(t){for(var e=t.tagName+t.className+t.src+t.href+t.textConten...
  function ns (line 1) | function ns(t){Rr.length=0;for(var e=t.getElementsByTagName("input"),r=e...
  function Dr (line 1) | function Dr(t){return setTimeout(t,0)}
  function vi (line 1) | function vi(t){return clearTimeout(t)}
  function rs (line 1) | function rs(){function t(){this.defaults={scroll:!0,forceAutoScrollFallb...
  function Tr (line 1) | function Tr(){Xe.forEach(function(t){clearInterval(t.pid)}),Xe=[]}
  function go (line 1) | function go(){clearInterval(qn)}
  function yi (line 1) | function yi(){}
  function wi (line 1) | function wi(){}
  function e (line 1) | function e(c){var a=c.getBoundingClientRect();return{width:a.width,heigh...
  function r (line 1) | function r(c){if(c==null)return window;if(c.toString()!=="[object Window...
  function n (line 1) | function n(c){var a=r(c),g=a.pageXOffset,D=a.pageYOffset;return{scrollLe...
  function i (line 1) | function i(c){var a=r(c).Element;return c instanceof a||c instanceof Ele...
  function o (line 1) | function o(c){var a=r(c).HTMLElement;return c instanceof a||c instanceof...
  function l (line 1) | function l(c){if(typeof ShadowRoot>"u")return!1;var a=r(c).ShadowRoot;re...
  function h (line 1) | function h(c){return{scrollLeft:c.scrollLeft,scrollTop:c.scrollTop}}
  function u (line 1) | function u(c){return c===r(c)||!o(c)?n(c):h(c)}
  function f (line 1) | function f(c){return c?(c.nodeName||"").toLowerCase():null}
  function y (line 1) | function y(c){return((i(c)?c.ownerDocument:c.document)||window.document)...
  function b (line 1) | function b(c){return e(y(c)).left+n(c).scrollLeft}
  function A (line 1) | function A(c){return r(c).getComputedStyle(c)}
  function E (line 1) | function E(c){var a=A(c),g=a.overflow,D=a.overflowX,T=a.overflowY;return...
  function O (line 1) | function O(c,a,g){g===void 0&&(g=!1);var D=y(a),T=e(c),F=o(a),W={scrollL...
  function P (line 1) | function P(c){var a=e(c),g=c.offsetWidth,D=c.offsetHeight;return Math.ab...
  function R (line 1) | function R(c){return f(c)==="html"?c:c.assignedSlot||c.parentNode||(l(c)...
  function $ (line 1) | function $(c){return["html","body","#document"].indexOf(f(c))>=0?c.owner...
  function B (line 1) | function B(c,a){var g;a===void 0&&(a=[]);var D=$(c),T=D===((g=c.ownerDoc...
  function K (line 1) | function K(c){return["table","td","th"].indexOf(f(c))>=0}
  function X (line 1) | function X(c){return!o(c)||A(c).position==="fixed"?null:c.offsetParent}
  function ne (line 1) | function ne(c){var a=navigator.userAgent.toLowerCase().indexOf("firefox"...
  function J (line 1) | function J(c){for(var a=r(c),g=X(c);g&&K(g)&&A(g).position==="static";)g...
  function Br (line 1) | function Br(c){var a=new Map,g=new Set,D=[];c.forEach(function(F){a.set(...
  function mt (line 1) | function mt(c){var a=Br(c);return It.reduce(function(g,D){return g.conca...
  function Ut (line 1) | function Ut(c){var a;return function(){return a||(a=new Promise(function...
  function At (line 1) | function At(c){for(var a=arguments.length,g=new Array(a>1?a-1:0),D=1;D<a...
  function $r (line 1) | function $r(c){c.forEach(function(a){Object.keys(a).forEach(function(g){...
  function Wr (line 1) | function Wr(c,a){var g=new Set;return c.filter(function(D){var T=a(D);if...
  function ot (line 1) | function ot(c){return c.split("-")[0]}
  function Vr (line 1) | function Vr(c){var a=c.reduce(function(g,D){var T=g[D.name];return g[D.n...
  function ir (line 1) | function ir(c){var a=r(c),g=y(c),D=a.visualViewport,T=g.clientWidth,F=g....
  function or (line 1) | function or(c){var a,g=y(c),D=n(c),T=(a=c.ownerDocument)==null?void 0:a....
  function kn (line 1) | function kn(c,a){var g=a.getRootNode&&a.getRootNode();if(c.contains(a))r...
  function Xt (line 1) | function Xt(c){return Object.assign({},c,{left:c.x,top:c.y,right:c.x+c.w...
  function ar (line 1) | function ar(c){var a=e(c);return a.top=a.top+c.clientTop,a.left=a.left+c...
  function sr (line 1) | function sr(c,a){return a===N?Xt(ir(c)):o(a)?ar(a):Xt(or(y(c)))}
  function yn (line 1) | function yn(c){var a=B(R(c)),g=["absolute","fixed"].indexOf(A(c).positio...
  function wn (line 1) | function wn(c,a,g){var D=a==="clippingParents"?yn(c):[].concat(a),T=[].c...
  function cn (line 1) | function cn(c){return c.split("-")[1]}
  function dt (line 1) | function dt(c){return["top","bottom"].indexOf(c)>=0?"x":"y"}
  function lr (line 1) | function lr(c){var a=c.reference,g=c.element,D=c.placement,T=D?ot(D):nul...
  function cr (line 1) | function cr(){return{top:0,right:0,bottom:0,left:0}}
  function fr (line 1) | function fr(c){return Object.assign({},cr(),c)}
  function ur (line 1) | function ur(c,a){return a.reduce(function(g,D){return g[D]=c,g},{})}
  function qt (line 1) | function qt(c,a){a===void 0&&(a={});var g=a,D=g.placement,T=D===void 0?c...
  function fn (line 1) | function fn(){for(var c=arguments.length,a=new Array(c),g=0;g<c;g++)a[g]...
  function En (line 1) | function En(c){c===void 0&&(c={});var a=c,g=a.defaultModifiers,D=g===voi...
  function Ur (line 1) | function Ur(c){var a=c.state,g=c.instance,D=c.options,T=D.scroll,F=T===v...
  function Yr (line 1) | function Yr(c){var a=c.state,g=c.name;a.modifiersData[g]=lr({reference:a...
  function qr (line 1) | function qr(c){var a=c.x,g=c.y,D=window,T=D.devicePixelRatio||1;return{x...
  function Hn (line 1) | function Hn(c){var a,g=c.popper,D=c.popperRect,T=c.placement,F=c.offsets...
  function m (line 1) | function m(c){var a=c.state,g=c.options,D=g.gpuAcceleration,T=D===void 0...
  function S (line 5) | function S(c){var a=c.state;Object.keys(a.elements).forEach(function(g){...
  function I (line 5) | function I(c){var a=c.state,g={popper:{position:a.options.strategy,left:...
  function H (line 5) | function H(c,a,g){var D=ot(c),T=[Z,V].indexOf(D)>=0?-1:1,F=typeof g=="fu...
  function k (line 5) | function k(c){var a=c.state,g=c.options,D=c.name,T=g.offset,F=T===void 0...
  function pe (line 5) | function pe(c){return c.replace(/left|right|bottom|top/g,function(a){ret...
  function _e (line 5) | function _e(c){return c.replace(/start|end/g,function(a){return ye[a]})}
  function je (line 5) | function je(c,a){a===void 0&&(a={});var g=a,D=g.placement,T=g.boundary,F...
  function Se (line 5) | function Se(c){if(ot(c)===me)return[];var a=pe(c);return[_e(c),a,_e(a)]}
  function Ie (line 5) | function Ie(c){var a=c.state,g=c.options,D=c.name;if(!a.modifiersData[D]...
  function he (line 5) | function he(c){return c==="x"?"y":"x"}
  function ve (line 5) | function ve(c,a,g){return gt(c,ln(a,g))}
  function ee (line 5) | function ee(c){var a=c.state,g=c.options,D=c.name,T=g.mainAxis,F=T===voi...
  function Ge (line 5) | function Ge(c){var a,g=c.state,D=c.name,T=c.options,F=g.elements.arrow,W...
  function fe (line 5) | function fe(c){var a=c.state,g=c.options,D=g.element,T=D===void 0?"[data...
  function bt (line 5) | function bt(c,a,g){return g===void 0&&(g={x:0,y:0}),{top:c.top-a.height-...
  function Gt (line 5) | function Gt(c){return[V,U,de,Z].some(function(a){return c[a]>=0})}
  function Kt (line 5) | function Kt(c){var a=c.state,g=c.name,D=a.rects.reference,T=a.rects.popp...
  function f (line 5) | function f(m,w){return{}.hasOwnProperty.call(m,w)}
  function y (line 5) | function y(m,w,S){if(Array.isArray(m)){var I=m[w];return I??(Array.isArr...
  function b (line 5) | function b(m,w){var S={}.toString.call(m);return S.indexOf("[object")===...
  function A (line 5) | function A(m,w){return typeof m=="function"?m.apply(void 0,w):m}
  function E (line 5) | function E(m,w){if(w===0)return m;var S;return function(I){clearTimeout(...
  function O (line 5) | function O(m,w){var S=Object.assign({},m);return w.forEach(function(I){d...
  function P (line 5) | function P(m){return m.split(/\s+/).filter(Boolean)}
  function R (line 5) | function R(m){return[].concat(m)}
  function $ (line 5) | function $(m,w){m.indexOf(w)===-1&&m.push(w)}
  function B (line 5) | function B(m){return m.filter(function(w,S){return m.indexOf(w)===S})}
  function K (line 5) | function K(m){return m.split("-")[0]}
  function X (line 5) | function X(m){return[].slice.call(m)}
  function ne (line 5) | function ne(m){return Object.keys(m).reduce(function(w,S){return m[S]!==...
  function J (line 5) | function J(){return document.createElement("div")}
  function V (line 5) | function V(m){return["Element","Fragment"].some(function(w){return b(m,w...
  function de (line 5) | function de(m){return b(m,"NodeList")}
  function U (line 5) | function U(m){return b(m,"MouseEvent")}
  function Z (line 5) | function Z(m){return!!(m&&m._tippy&&m._tippy.reference===m)}
  function me (line 5) | function me(m){return V(m)?[m]:de(m)?X(m):Array.isArray(m)?m:X(document....
  function s (line 5) | function s(m,w){m.forEach(function(S){S&&(S.style.transitionDuration=w+"...
  function p (line 5) | function p(m,w){m.forEach(function(S){S&&S.setAttribute("data-state",w)})}
  function v (line 5) | function v(m){var w,S=R(m),I=S[0];return!(I==null||(w=I.ownerDocument)==...
  function d (line 5) | function d(m,w){var S=w.clientX,I=w.clientY;return m.every(function(Y){v...
  function N (line 5) | function N(m,w,S){var I=w+"EventListener";["transitionend","webkitTransi...
  function Q (line 5) | function Q(){_.isTouch||(_.isTouch=!0,window.performance&&document.addEv...
  function Ue (line 5) | function Ue(){var m=performance.now();m-M<20&&(_.isTouch=!1,document.rem...
  function Rt (line 5) | function Rt(){var m=document.activeElement;if(Z(m)){var w=m._tippy;m.blu...
  function Vt (line 5) | function Vt(){document.addEventListener("touchstart",Q,u),window.addEven...
  function zt (line 5) | function zt(m){var w=m==="destroy"?"n already-":" ";return[m+"() was cal...
  function nr (line 5) | function nr(m){var w=/[ \t]{2,}/g,S=/^[ \t]*/gm;return m.replace(w," ")....
  function jr (line 5) | function jr(m){return nr(`
  function rr (line 11) | function rr(m){return[jr(m),"color: #00C584; font-size: 1.3em; font-weig...
  function Br (line 11) | function Br(){It=new Set}
  function mt (line 11) | function mt(m,w){if(m&&!It.has(w)){var S;It.add(w),(S=console).warn.appl...
  function Ut (line 11) | function Ut(m,w){if(m&&!It.has(w)){var S;It.add(w),(S=console).error.app...
  function At (line 11) | function At(m){var w=!m,S=Object.prototype.toString.call(m)==="[object O...
  function ot (line 11) | function ot(m){var w=m.plugins||[],S=w.reduce(function(I,Y){var H=Y.name...
  function Vr (line 11) | function Vr(m,w){var S=w?Object.keys(ot(Object.assign({},Qe,{plugins:w})...
  function ir (line 11) | function ir(m,w){var S=Object.assign({},w,{content:A(w.content,[m])},w.i...
  function gt (line 11) | function gt(m,w){m===void 0&&(m={}),w===void 0&&(w=[]);var S=Object.keys...
  function Yt (line 14) | function Yt(m,w){m[ln()]=w}
  function or (line 14) | function or(m){var w=J();return m===!0?w.className=l:(w.className=h,V(m)...
  function kn (line 14) | function kn(m,w){V(w.content)?(Yt(m,""),m.appendChild(w.content)):typeof...
  function Xt (line 14) | function Xt(m){var w=m.firstElementChild,S=X(w.children);return{box:w,co...
  function ar (line 14) | function ar(m){var w=J(),S=J();S.className=n,S.setAttribute("data-state"...
  function cn (line 14) | function cn(m,w){var S=ir(m,Object.assign({},Qe,{},ot(ne(w)))),I,Y,H,k=!...
  function dt (line 20) | function dt(m,w){w===void 0&&(w={});var S=Qe.plugins.concat(w.plugins||[...
  function ye (line 25) | function ye(){H=Y.map(function(ee){return ee.reference})}
  function _e (line 25) | function _e(ee){Y.forEach(function(ie){ee?ie.enable():ie.disable()})}
  function je (line 25) | function je(ee){return Y.map(function(ie){var x=ie.setProps;return ie.se...
  function Se (line 25) | function Se(ee,ie){var x=H.indexOf(ie);if(ie!==k){k=ie;var Ge=(be||[]).c...
  function qt (line 25) | function qt(m,w){Ut(!(w&&w.target),["You must specity a `target` prop in...
  function zr (line 25) | function zr(){var m=J();return m.className=o,p([m],"hidden"),m}
  function En (line 25) | function En(m){var w=m.clientX,S=m.clientY;xn={clientX:w,clientY:S}}
  function On (line 25) | function On(m){m.addEventListener("mousemove",En)}
  function Ur (line 25) | function Ur(m){m.removeEventListener("mousemove",En)}
  function le (line 25) | function le(){return w.props.followCursor==="initial"&&w.state.isVisible}
  function pe (line 25) | function pe(){I.addEventListener("mousemove",je)}
  function ye (line 25) | function ye(){I.removeEventListener("mousemove",je)}
  function _e (line 25) | function _e(){Y=!0,w.setProps({getReferenceClientRect:null}),Y=!1}
  function je (line 25) | function je(re){var he=re.target?S.contains(re.target):!0,ve=w.props.fol...
  function Se (line 25) | function Se(){w.props.followCursor&&(fn.push({instance:w,doc:I}),On(I))}
  function Ie (line 25) | function Ie(){fn=fn.filter(function(re){return re.instance!==w}),fn.filt...
  function Yr (line 25) | function Yr(m,w){var S;return{popperOptions:Object.assign({},m.popperOpt...
  function I (line 25) | function I(){return!!w.props.inlinePositioning}
  function le (line 25) | function le(_e){return Xr(K(_e),S.getBoundingClientRect(),X(S.getClientR...
  function pe (line 25) | function pe(_e){k=!0,w.setProps(_e),k=!1}
  function ye (line 25) | function ye(){k||pe(Yr(w.props,be))}
  function Xr (line 25) | function Xr(m,w,S,I){if(S.length<2||m===null)return w;if(S.length===2&&I...
  function Y (line 25) | function Y(){return w.popperInstance?w.popperInstance.state.elements.ref...
  function H (line 25) | function H(pe){return w.props.sticky===!0||w.props.sticky===pe}
  function le (line 25) | function le(){var pe=H("reference")?Y().getBoundingClientRect():null,ye=...
  function Hn (line 25) | function Hn(m,w){return m&&w?m.top!==w.top||m.right!==w.right||m.bottom!...
  function Oi (line 25) | function Oi(t){t.magic("tooltip",e=>(r,n={})=>{let i=n.timeout;delete n....
  function n (line 25) | function n(y,b){for(let A of y){let E=i(A,b);if(E!==null)return E}}
  function i (line 25) | function i(y,b){let A=y.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(A==...
  function o (line 25) | function o(y){return y.toString().charAt(0).toUpperCase()+y.toString().s...
  function l (line 25) | function l(y,b){if(b.length===0)return y;let A={};for(let[E,O]of Object....
  function h (line 25) | function h(y){return y.map(b=>b.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}

FILE: public/js/filament/tables/components/table.js
  function c (line 1) | function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],s...

FILE: public/js/filament/widgets/components/chart.js
  function Ft (line 1) | function Ft(){}
  function R (line 1) | function R(s){return s===null||typeof s>"u"}
  function $ (line 1) | function $(s){if(Array.isArray&&Array.isArray(s))return!0;let t=Object.p...
  function A (line 1) | function A(s){return s!==null&&Object.prototype.toString.call(s)==="[obj...
  function mt (line 1) | function mt(s,t){return K(s)?s:t}
  function I (line 1) | function I(s,t){return typeof s>"u"?t:s}
  function j (line 1) | function j(s,t,e){if(s&&typeof s.call=="function")return s.apply(e,t)}
  function H (line 1) | function H(s,t,e,i){let n,r,o;if($(s))if(r=s.length,i)for(n=r-1;n>=0;n--...
  function xs (line 1) | function xs(s,t){let e,i,n,r;if(!s||!t||s.length!==t.length)return!1;for...
  function _i (line 1) | function _i(s){if($(s))return s.map(_i);if(A(s)){let t=Object.create(nul...
  function vo (line 1) | function vo(s){return["__proto__","prototype","constructor"].indexOf(s)=...
  function kc (line 1) | function kc(s,t,e,i){if(!vo(s))return;let n=t[s],r=e[s];A(n)&&A(r)?Ce(n,...
  function Ce (line 1) | function Ce(s,t,e){let i=$(t)?t:[t],n=i.length;if(!A(s))return s;e=e||{}...
  function Pe (line 1) | function Pe(s,t){return Ce(s,t,{merger:Mc})}
  function Mc (line 1) | function Mc(s,t,e){if(!vo(s))return;let i=t[s],n=e[s];A(i)&&A(n)?Pe(i,n)...
  function Bt (line 1) | function Bt(s,t){return(co[t]||(co[t]=Tc(t)))(s)}
  function Tc (line 1) | function Tc(s){let t=vc(s);return e=>{for(let i of t){if(i==="")break;e=...
  function vc (line 1) | function vc(s){let t=s.split("."),e=[],i="";for(let n of t)i+=n,i.endsWi...
  function Mi (line 1) | function Mi(s){return s.charAt(0).toUpperCase()+s.slice(1)}
  function Oo (line 1) | function Oo(s){return s.type==="mouseup"||s.type==="click"||s.type==="co...
  function On (line 1) | function On(s){let t=Math.round(s);s=Ne(s,t,s/1e3)?t:s;let e=Math.pow(10...
  function Do (line 1) | function Do(s){let t=[],e=Math.sqrt(s),i;for(i=1;i<e;i++)s%i===0&&(t.pus...
  function pe (line 1) | function pe(s){return!isNaN(parseFloat(s))&&isFinite(s)}
  function Ne (line 1) | function Ne(s,t,e){return Math.abs(s-t)<e}
  function Eo (line 1) | function Eo(s,t){let e=Math.round(s);return e-t<=s&&e+t>=s}
  function Dn (line 1) | function Dn(s,t,e){let i,n,r;for(i=0,n=s.length;i<n;i++)r=s[i][e],isNaN(...
  function wt (line 1) | function wt(s){return s*(Y/180)}
  function Ti (line 1) | function Ti(s){return s*(180/Y)}
  function En (line 1) | function En(s){if(!K(s))return;let t=1,e=0;for(;Math.round(s*t)/t!==s;)t...
  function In (line 1) | function In(s,t){let e=t.x-s.x,i=t.y-s.y,n=Math.sqrt(e*e+i*i),r=Math.ata...
  function Si (line 1) | function Si(s,t){return Math.sqrt(Math.pow(t.x-s.x,2)+Math.pow(t.y-s.y,2))}
  function Ec (line 1) | function Ec(s,t){return(s-t+Oc)%B-Y}
  function ht (line 1) | function ht(s){return(s%B+B)%B}
  function Re (line 1) | function Re(s,t,e,i){let n=ht(s),r=ht(t),o=ht(e),a=ht(r-n),l=ht(o-n),c=h...
  function it (line 1) | function it(s,t,e){return Math.max(t,Math.min(e,s))}
  function Io (line 1) | function Io(s){return it(s,-32768,32767)}
  function At (line 1) | function At(s,t,e,i=1e-6){return s>=Math.min(t,e)-i&&s<=Math.max(t,e)+i}
  function vi (line 1) | function vi(s,t,e){e=e||(o=>s[o]<t);let i=s.length-1,n=0,r;for(;i-n>1;)r...
  function Fo (line 1) | function Fo(s,t,e){let i=0,n=s.length;for(;i<n&&s[i]<t;)i++;for(;n>i&&s[...
  function Lo (line 1) | function Lo(s,t){if(s._chartjs){s._chartjs.listeners.push(t);return}Obje...
  function Cn (line 1) | function Cn(s,t){let e=s._chartjs;if(!e)return;let i=e.listeners,n=i.ind...
  function Fn (line 1) | function Fn(s){let t=new Set,e,i;for(e=0,i=s.length;e<i;++e)t.add(s[e]);...
  function Ln (line 1) | function Ln(s,t,e){let i=e||(o=>Array.prototype.slice.call(o)),n=!1,r=[]...
  function Po (line 1) | function Po(s,t){let e;return function(...i){return t?(clearTimeout(e),e...
  function Pn (line 1) | function Pn(s,t,e){let i=t.length,n=0,r=i;if(s._sorted){let{iScale:o,_pa...
  function Nn (line 1) | function Nn(s){let{xScale:t,yScale:e,_scaleRanges:i}=s,n={xmin:t.min,xma...
  method easeInOutElastic (line 1) | easeInOutElastic(s){return gi(s)?s:s<.5?.5*uo(s*2,.1125,.45):.5+.5*fo(s*...
  method easeInBack (line 1) | easeInBack(s){return s*s*((1.70158+1)*s-1.70158)}
  method easeOutBack (line 1) | easeOutBack(s){return(s-=1)*s*((1.70158+1)*s+1.70158)+1}
  method easeInOutBack (line 1) | easeInOutBack(s){let t=1.70158;return(s/=.5)<1?.5*(s*s*(((t*=1.525)+1)*s...
  method easeOutBounce (line 1) | easeOutBounce(s){return s<1/2.75?7.5625*s*s:s<2/2.75?7.5625*(s-=1.5/2.75...
  function _s (line 1) | function _s(s){return s+.5|0}
  function ps (line 1) | function ps(s){return Kt(_s(s*2.55),0,255)}
  function Jt (line 1) | function Jt(s){return Kt(_s(s*255),0,255)}
  function Vt (line 1) | function Vt(s){return Kt(_s(s/2.55)/100,0,1)}
  function mo (line 1) | function mo(s){return Kt(_s(s*100),0,100)}
  function Ac (line 1) | function Ac(s){var t=s.length,e;return s[0]==="#"&&(t===4||t===5?e={r:25...
  function Pc (line 1) | function Pc(s){var t=Fc(s)?Ic:Cc;return s?"#"+t(s.r)+t(s.g)+t(s.b)+Lc(s....
  function Ro (line 1) | function Ro(s,t,e){let i=t*Math.min(e,1-e),n=(r,o=(r+s/30)%12)=>e-i*Math...
  function Rc (line 1) | function Rc(s,t,e){let i=(n,r=(n+s/60)%6)=>e-e*t*Math.max(Math.min(r,4-r...
  function Wc (line 1) | function Wc(s,t,e){let i=Ro(s,1,.5),n;for(t+e>1&&(n=1/(t+e),t*=n,e*=n),n...
  function zc (line 1) | function zc(s,t,e,i,n){return s===n?(t-e)/i+(t<e?6:0):t===n?(e-s)/i+2:(s...
  function Rn (line 1) | function Rn(s){let e=s.r/255,i=s.g/255,n=s.b/255,r=Math.max(e,i,n),o=Mat...
  function Wn (line 1) | function Wn(s,t,e,i){return(Array.isArray(t)?s(t[0],t[1],t[2]):s(t,e,i))...
  function zn (line 1) | function zn(s,t,e){return Wn(Ro,s,t,e)}
  function Vc (line 1) | function Vc(s,t,e){return Wn(Wc,s,t,e)}
  function Hc (line 1) | function Hc(s,t,e){return Wn(Rc,s,t,e)}
  function Wo (line 1) | function Wo(s){return(s%360+360)%360}
  function Bc (line 1) | function Bc(s){let t=Nc.exec(s),e=255,i;if(!t)return;t[5]!==i&&(e=t[6]?p...
  function $c (line 1) | function $c(s,t){var e=Rn(s);e[0]=Wo(e[0]+t),e=zn(e),s.r=e[0],s.g=e[1],s...
  function jc (line 1) | function jc(s){if(!s)return;let t=Rn(s),e=t[0],i=mo(t[1]),n=mo(t[2]);ret...
  function Uc (line 1) | function Uc(){let s={},t=Object.keys(po),e=Object.keys(go),i,n,r,o,a;for...
  function Yc (line 1) | function Yc(s){yi||(yi=Uc(),yi.transparent=[0,0,0,0]);let t=yi[s.toLower...
  function qc (line 1) | function qc(s){let t=Zc.exec(s),e=255,i,n,r;if(t){if(t[7]!==i){let o=+t[...
  function Gc (line 1) | function Gc(s){return s&&(s.a<255?`rgba(${s.r}, ${s.g}, ${s.b}, ${Vt(s.a...
  function Xc (line 1) | function Xc(s,t,e){let i=Ee(Vt(s.r)),n=Ee(Vt(s.g)),r=Ee(Vt(s.b));return{...
  function bi (line 1) | function bi(s,t,e){if(s){let i=Rn(s);i[t]=Math.max(0,Math.min(i[t]+i[t]*...
  function zo (line 1) | function zo(s,t){return s&&Object.assign(t||{},s)}
  function yo (line 1) | function yo(s){var t={r:0,g:0,b:0,a:255};return Array.isArray(s)?s.lengt...
  function Kc (line 1) | function Kc(s){return s.charAt(0)==="r"?qc(s):Bc(s)}
  method constructor (line 1) | constructor(t){if(t instanceof Fe)return t;let e=typeof t,i;e==="object"...
  method valid (line 1) | get valid(){return this._valid}
  method rgb (line 1) | get rgb(){var t=zo(this._rgb);return t&&(t.a=Vt(t.a)),t}
  method rgb (line 1) | set rgb(t){this._rgb=yo(t)}
  method rgbString (line 1) | rgbString(){return this._valid?Gc(this._rgb):void 0}
  method hexString (line 1) | hexString(){return this._valid?Pc(this._rgb):void 0}
  method hslString (line 1) | hslString(){return this._valid?jc(this._rgb):void 0}
  method mix (line 1) | mix(t,e){if(t){let i=this.rgb,n=t.rgb,r,o=e===r?.5:e,a=2*o-1,l=i.a-n.a,c...
  method interpolate (line 1) | interpolate(t,e){return t&&(this._rgb=Xc(this._rgb,t._rgb,e)),this}
  method clone (line 1) | clone(){return new Fe(this.rgb)}
  method alpha (line 1) | alpha(t){return this._rgb.a=Jt(t),this}
  method clearer (line 1) | clearer(t){let e=this._rgb;return e.a*=1-t,this}
  method greyscale (line 1) | greyscale(){let t=this._rgb,e=_s(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=...
  method opaquer (line 1) | opaquer(t){let e=this._rgb;return e.a*=1+t,this}
  method negate (line 1) | negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}
  method lighten (line 1) | lighten(t){return bi(this._rgb,2,t),this}
  method darken (line 1) | darken(t){return bi(this._rgb,2,-t),this}
  method saturate (line 1) | saturate(t){return bi(this._rgb,1,t),this}
  method desaturate (line 1) | desaturate(t){return bi(this._rgb,1,-t),this}
  method rotate (line 1) | rotate(t){return $c(this._rgb,t),this}
  function Vo (line 1) | function Vo(s){return new Fe(s)}
  function Ho (line 1) | function Ho(s){if(s&&typeof s=="object"){let t=s.toString();return t==="...
  function Vn (line 1) | function Vn(s){return Ho(s)?s:Vo(s)}
  function _n (line 1) | function _n(s){return Ho(s)?s:Vo(s).saturate(.5).darken(.1).hexString()}
  function ys (line 1) | function ys(s,t){if(!t)return s;let e=t.split(".");for(let i=0,n=e.lengt...
  function wn (line 1) | function wn(s,t,e){return typeof t=="string"?Ce(ys(s,t),e):Ce(ys(s,""),t)}
  method constructor (line 1) | constructor(t){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0....
  method set (line 1) | set(t,e){return wn(this,t,e)}
  method get (line 1) | get(t){return ys(this,t)}
  method describe (line 1) | describe(t,e){return wn(Di,t,e)}
  method override (line 1) | override(t,e){return wn(Qt,t,e)}
  method route (line 1) | route(t,e,i,n){let r=ys(this,t),o=ys(this,i),a="_"+e;Object.defineProper...
  function Jc (line 1) | function Jc(s){return!s||R(s.size)||R(s.family)?null:(s.style?s.style+" ...
  function bs (line 1) | function bs(s,t,e,i,n){let r=t[n];return r||(r=t[n]=s.measureText(n).wid...
  function Bo (line 1) | function Bo(s,t,e,i){i=i||{};let n=i.data=i.data||{},r=i.garbageCollect=...
  function te (line 1) | function te(s,t,e){let i=s.currentDevicePixelRatio,n=e!==0?Math.max(e/2,...
  function Hn (line 1) | function Hn(s,t){t=t||s.getContext("2d"),t.save(),t.resetTransform(),t.c...
  function Ei (line 1) | function Ei(s,t,e,i){Bn(s,t,e,i,null)}
  function Bn (line 1) | function Bn(s,t,e,i,n){let r,o,a,l,c,h,u=t.pointStyle,d=t.rotation,f=t.r...
  function Ae (line 1) | function Ae(s,t,e){return e=e||.5,!t||s&&s.x>t.left-e&&s.x<t.right+e&&s....
  function ws (line 1) | function ws(s,t){s.save(),s.beginPath(),s.rect(t.left,t.top,t.right-t.le...
  function Ss (line 1) | function Ss(s){s.restore()}
  function $o (line 1) | function $o(s,t,e,i,n){if(!t)return s.lineTo(e.x,e.y);if(n==="middle"){l...
  function jo (line 1) | function jo(s,t,e,i){if(!t)return s.lineTo(e.x,e.y);s.bezierCurveTo(i?t....
  function ee (line 1) | function ee(s,t,e,i,n,r={}){let o=$(t)?t:[t],a=r.strokeWidth>0&&r.stroke...
  function Qc (line 1) | function Qc(s,t){t.translation&&s.translate(t.translation[0],t.translati...
  function th (line 1) | function th(s,t,e,i,n){if(n.strikethrough||n.underline){let r=s.measureT...
  function We (line 1) | function We(s,t){let{x:e,y:i,w:n,h:r,radius:o}=t;s.arc(e+o.topLeft,i+o.t...
  function ih (line 1) | function ih(s,t){let e=(""+s).match(eh);if(!e||e[1]==="normal")return t*...
  function Ii (line 1) | function Ii(s,t){let e={},i=A(t),n=i?Object.keys(t):t,r=A(s)?i?o=>I(s[o]...
  function $n (line 1) | function $n(s){return Ii(s,{top:"y",right:"x",bottom:"y",left:"x"})}
  function se (line 1) | function se(s){return Ii(s,["topLeft","topRight","bottomLeft","bottomRig...
  function at (line 1) | function at(s){let t=$n(s);return t.width=t.left+t.right,t.height=t.top+...
  function et (line 1) | function et(s,t){s=s||{},t=t||L.font;let e=I(s.size,t.size);typeof e=="s...
  function ze (line 1) | function ze(s,t,e,
Condensed preview — 216 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,419K chars).
[
  {
    "path": ".editorconfig",
    "chars": 258,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 4\nindent_style = space\ninsert_final_newline = true\ntrim_"
  },
  {
    "path": ".gitattributes",
    "chars": 186,
    "preview": "* text=auto eol=lf\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 ex"
  },
  {
    "path": ".github/workflows/tests.yml",
    "chars": 885,
    "preview": "name: Run tests\n\non:\n  pull_request:\n    branches: [ \"main\" ]\n\njobs:\n  laravel-tests:\n\n    runs-on: ubuntu-latest\n\n    s"
  },
  {
    "path": ".gitignore",
    "chars": 252,
    "preview": "/.phpunit.cache\n/node_modules\n/public/build\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n.env\n.env.backup\n.env.pro"
  },
  {
    "path": ".readme/CustomFields.md",
    "chars": 2040,
    "preview": "FilaStart is built with customization in mind. You can create your own custom fields to suit your needs. Here's a quick "
  },
  {
    "path": ".readme/ModifyingTemplates.md",
    "chars": 1004,
    "preview": "While our generator covers most basic things, you should add different stuff to your files. To do that, you can modify t"
  },
  {
    "path": ".readme/ModulesReadme.md",
    "chars": 3394,
    "preview": "A quick overview of how Modules work.\n\n## What is a Module?\n\nIn this system, a module is a set of pre-defined CRUD detai"
  },
  {
    "path": ".readme/excalidraw/FileCopyingGraph.excalidraw",
    "chars": 28414,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"id\": \"HdKqs"
  },
  {
    "path": "README.md",
    "chars": 6131,
    "preview": "Build your Filament panel **visually** with... Filament!\n\nCrud List example:\n![](./.readme/images/crudListExample.png)\n\n"
  },
  {
    "path": "app/Enums/CrudFieldTypes.php",
    "chars": 1226,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nuse Filament\\Support\\Contracts\\HasLabel;\n\nenum CrudFieldTypes: string implements HasLabel\n{"
  },
  {
    "path": "app/Enums/CrudFieldValidation.php",
    "chars": 371,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nuse Filament\\Support\\Contracts\\HasLabel;\n\nenum CrudFieldValidation: string implements HasLa"
  },
  {
    "path": "app/Enums/CrudTypes.php",
    "chars": 411,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nuse Filament\\Support\\Contracts\\HasLabel;\n\nenum CrudTypes: string implements HasLabel\n{\n    "
  },
  {
    "path": "app/Enums/HeroIcons.php",
    "chars": 63825,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nuse Filament\\Support\\Contracts\\HasLabel;\n\nenum HeroIcons: string implements HasLabel\n{\n    "
  },
  {
    "path": "app/Enums/PanelTypes.php",
    "chars": 91,
    "preview": "<?php\n\nnamespace App\\Enums;\n\nenum PanelTypes: string\n{\n    case FILAMENT3 = 'filament3';\n}\n"
  },
  {
    "path": "app/Filament/Pages/CreatePanelPage.php",
    "chars": 856,
    "preview": "<?php\n\nnamespace App\\Filament\\Pages;\n\nuse App\\Enums\\PanelTypes;\nuse App\\Jobs\\Generator\\PanelCreatedJob;\nuse App\\Models\\P"
  },
  {
    "path": "app/Filament/Pages/PanelDeploymentPage.php",
    "chars": 2574,
    "preview": "<?php\n\nnamespace App\\Filament\\Pages;\n\nuse App\\Jobs\\Generator\\GeneratePanelCodeJob;\nuse App\\Models\\Panel;\nuse App\\Models\\"
  },
  {
    "path": "app/Filament/Pages/PanelModuleManagement.php",
    "chars": 1656,
    "preview": "<?php\n\nnamespace App\\Filament\\Pages;\n\nuse App\\Models\\Module;\nuse App\\Models\\Panel;\nuse App\\Services\\ModuleService;\nuse F"
  },
  {
    "path": "app/Filament/Resources/CrudResource/Pages/CreateCrud.php",
    "chars": 4011,
    "preview": "<?php\n\nnamespace App\\Filament\\Resources\\CrudResource\\Pages;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse "
  },
  {
    "path": "app/Filament/Resources/CrudResource/Pages/EditCrud.php",
    "chars": 397,
    "preview": "<?php\n\nnamespace App\\Filament\\Resources\\CrudResource\\Pages;\n\nuse App\\Filament\\Resources\\CrudResource;\nuse Filament\\Actio"
  },
  {
    "path": "app/Filament/Resources/CrudResource/Pages/ListCruds.php",
    "chars": 400,
    "preview": "<?php\n\nnamespace App\\Filament\\Resources\\CrudResource\\Pages;\n\nuse App\\Filament\\Resources\\CrudResource;\nuse Filament\\Actio"
  },
  {
    "path": "app/Filament/Resources/CrudResource/RelationManagers/FieldsRelationManager.php",
    "chars": 8659,
    "preview": "<?php\n\nnamespace App\\Filament\\Resources\\CrudResource\\RelationManagers;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\Crud"
  },
  {
    "path": "app/Filament/Resources/CrudResource.php",
    "chars": 6449,
    "preview": "<?php\n\nnamespace App\\Filament\\Resources;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Enums\\HeroIcons;\nuse App\\Filament\\Resources\\C"
  },
  {
    "path": "app/Http/Controllers/Controller.php",
    "chars": 77,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nabstract class Controller\n{\n    //\n}\n"
  },
  {
    "path": "app/Http/Responses/LoginResponse.php",
    "chars": 627,
    "preview": "<?php\n\nnamespace App\\Http\\Responses;\n\nuse App\\Filament\\Resources\\CrudResource;\nuse Illuminate\\Http\\RedirectResponse;\nuse"
  },
  {
    "path": "app/Interfaces/ModuleBase.php",
    "chars": 5979,
    "preview": "<?php\n\nnamespace App\\Interfaces;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Mo"
  },
  {
    "path": "app/Jobs/Generator/GeneratePanelCodeJob.php",
    "chars": 3078,
    "preview": "<?php\n\nnamespace App\\Jobs\\Generator;\n\nuse App\\Enums\\PanelTypes;\nuse App\\Models\\Panel;\nuse App\\Models\\PanelDeployment;\nus"
  },
  {
    "path": "app/Jobs/Generator/PanelCreatedJob.php",
    "chars": 559,
    "preview": "<?php\n\nnamespace App\\Jobs\\Generator;\n\nuse App\\Models\\Module;\nuse App\\Models\\Panel;\nuse App\\Services\\ModuleService;\nuse I"
  },
  {
    "path": "app/Models/Crud.php",
    "chars": 2740,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Enums\\HeroIcons;\nuse Illuminate\\Database\\Eloquent\\Builder"
  },
  {
    "path": "app/Models/CrudField.php",
    "chars": 3346,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse App\\Enums\\CrudFieldTypes;\nuse Illuminate\\Database\\Eloquent\\Casts\\Attribute;\nuse Illumi"
  },
  {
    "path": "app/Models/CrudFieldOptions.php",
    "chars": 1396,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse App\\Enums\\CrudFieldTypes;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Datab"
  },
  {
    "path": "app/Models/Module.php",
    "chars": 238,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\ncla"
  },
  {
    "path": "app/Models/Panel.php",
    "chars": 1341,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse App\\Enums\\PanelTypes;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Databas"
  },
  {
    "path": "app/Models/PanelDeployment.php",
    "chars": 696,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\Belongs"
  },
  {
    "path": "app/Models/PanelFile.php",
    "chars": 664,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\Relations\\Belongs"
  },
  {
    "path": "app/Models/User.php",
    "chars": 1767,
    "preview": "<?php\n\nnamespace App\\Models;\n\n// use Illuminate\\Contracts\\Auth\\MustVerifyEmail;\nuse Filament\\Models\\Contracts\\FilamentUs"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "chars": 519,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvid"
  },
  {
    "path": "app/Providers/Filament/BuilderPanelProvider.php",
    "chars": 2285,
    "preview": "<?php\n\nnamespace App\\Providers\\Filament;\n\nuse App\\Filament\\Pages\\CreatePanelPage;\nuse Filament\\Http\\Middleware\\Authentic"
  },
  {
    "path": "app/Providers/HorizonServiceProvider.php",
    "chars": 924,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Gate;\nuse Laravel\\Horizon\\Horizon;\n"
  },
  {
    "path": "app/Providers/TelescopeServiceProvider.php",
    "chars": 1649,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Gate;\nuse Laravel\\Telescope\\Incomin"
  },
  {
    "path": "app/Services/ModuleService.php",
    "chars": 798,
    "preview": "<?php\n\nnamespace App\\Services;\n\nuse App\\Enums\\PanelTypes;\nuse App\\Interfaces\\ModuleBase;\nuse App\\Models\\Panel;\nuse Gener"
  },
  {
    "path": "app/Services/PanelService.php",
    "chars": 2200,
    "preview": "<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\Panel;\nuse App\\Models\\PanelFile;\nuse Illuminate\\Filesystem\\Filesystem;\nus"
  },
  {
    "path": "artisan",
    "chars": 350,
    "preview": "#!/usr/bin/env php\n<?php\n\nuse Symfony\\Component\\Console\\Input\\ArgvInput;\n\ndefine('LARAVEL_START', microtime(true));\n\n// "
  },
  {
    "path": "bootstrap/app.php",
    "chars": 513,
    "preview": "<?php\n\nuse Illuminate\\Foundation\\Application;\nuse Illuminate\\Foundation\\Configuration\\Exceptions;\nuse Illuminate\\Foundat"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "bootstrap/providers.php",
    "chars": 220,
    "preview": "<?php\n\nreturn [\n    App\\Providers\\AppServiceProvider::class,\n    App\\Providers\\Filament\\BuilderPanelProvider::class,\n   "
  },
  {
    "path": "composer.json",
    "chars": 2954,
    "preview": "{\n    \"name\": \"laraveldaily/filastart\",\n    \"type\": \"project\",\n    \"description\": \"Build your Filament panel visually wi"
  },
  {
    "path": "config/app.php",
    "chars": 4284,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Applicatio"
  },
  {
    "path": "config/auth.php",
    "chars": 4029,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentica"
  },
  {
    "path": "config/cache.php",
    "chars": 3427,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/database.php",
    "chars": 6091,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/filament.php",
    "chars": 2996,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Broadcasti"
  },
  {
    "path": "config/filesystems.php",
    "chars": 2370,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Fi"
  },
  {
    "path": "config/horizon.php",
    "chars": 6880,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/logging.php",
    "chars": 4310,
    "preview": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\nuse Mon"
  },
  {
    "path": "config/mail.php",
    "chars": 3223,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Ma"
  },
  {
    "path": "config/queue.php",
    "chars": 3824,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Qu"
  },
  {
    "path": "config/reverb.php",
    "chars": 2741,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Re"
  },
  {
    "path": "config/services.php",
    "chars": 973,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Part"
  },
  {
    "path": "config/session.php",
    "chars": 7858,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/telescope.php",
    "chars": 6210,
    "preview": "<?php\n\nuse Laravel\\Telescope\\Http\\Middleware\\Authorize;\nuse Laravel\\Telescope\\Watchers;\n\nreturn [\n\n    /*\n    |---------"
  },
  {
    "path": "database/.gitignore",
    "chars": 10,
    "preview": "*.sqlite*\n"
  },
  {
    "path": "database/factories/UserFactory.php",
    "chars": 1075,
    "preview": "<?php\n\nnamespace Database\\Factories;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illuminate\\Support\\Facades"
  },
  {
    "path": "database/migrations/0001_01_01_000000_create_users_table.php",
    "chars": 1473,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/0001_01_01_000001_create_cache_table.php",
    "chars": 849,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/0001_01_01_000002_create_jobs_table.php",
    "chars": 1812,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_03_28_095305_create_panels_table.php",
    "chars": 524,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_02_141033_create_cruds_table.php",
    "chars": 1118,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_02_141038_create_crud_fields_table.php",
    "chars": 1249,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldValidation;\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\B"
  },
  {
    "path": "database/migrations/2024_04_03_105626_create_crud_field_options_table.php",
    "chars": 744,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_04_154557_create_panel_files_table.php",
    "chars": 638,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_04_155618_create_modules_table.php",
    "chars": 479,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_04_162604_create_module_panel_table.php",
    "chars": 485,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_09_153641_create_panel_deployments_table.php",
    "chars": 679,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2024_04_18_124339_create_telescope_entries_table.php",
    "chars": 2069,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/seeders/DatabaseSeeder.php",
    "chars": 711,
    "preview": "<?php\n\nnamespace Database\\Seeders;\n\nuse App\\Models\\Module;\nuse App\\Models\\User;\nuse App\\Services\\ModuleService;\nuse Illu"
  },
  {
    "path": "package.json",
    "chars": 412,
    "preview": "{\n    \"private\": true,\n    \"type\": \"module\",\n    \"scripts\": {\n        \"dev\": \"vite\",\n        \"build\": \"vite build\"\n    }"
  },
  {
    "path": "phpstan.neon",
    "chars": 572,
    "preview": "includes:\n    - vendor/larastan/larastan/extension.neon\n\nparameters:\n\n    paths:\n        - app/\n        - systems/\n\n    "
  },
  {
    "path": "phpunit.xml",
    "chars": 1502,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNam"
  },
  {
    "path": "postcss.config.js",
    "chars": 93,
    "preview": "export default {\n    plugins: {\n        tailwindcss: {},\n        autoprefixer: {},\n    },\n};\n"
  },
  {
    "path": "public/.htaccess",
    "chars": 603,
    "preview": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    Rewr"
  },
  {
    "path": "public/css/filament/filament/app.css",
    "chars": 105518,
    "preview": "/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);bo"
  },
  {
    "path": "public/css/filament/forms/forms.css",
    "chars": 86637,
    "preview": "input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position"
  },
  {
    "path": "public/css/filament/support/support.css",
    "chars": 3147,
    "preview": ".fi-pagination-items,.fi-pagination-overview,.fi-pagination-records-per-page-select:not(.fi-compact){display:none}@suppo"
  },
  {
    "path": "public/index.php",
    "chars": 468,
    "preview": "<?php\n\nuse Illuminate\\Http\\Request;\n\ndefine('LARAVEL_START', microtime(true));\n\n// Determine if the application is in ma"
  },
  {
    "path": "public/js/filament/filament/app.js",
    "chars": 7851,
    "preview": "(()=>{var Z=Object.create,L=Object.defineProperty,ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty,re=Object."
  },
  {
    "path": "public/js/filament/filament/echo.js",
    "chars": 91336,
    "preview": "(()=>{var ki=Object.create;var he=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPrope"
  },
  {
    "path": "public/js/filament/forms/components/color-picker.js",
    "chars": 9667,
    "preview": "var c=(e,t=0,r=1)=>e>r?r:e<t?t:e,n=(e,t=0,r=Math.pow(10,t))=>Math.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Ma"
  },
  {
    "path": "public/js/filament/forms/components/date-time-picker.js",
    "chars": 98018,
    "preview": "var oi=Object.create;var en=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var _i=Object.getOwnPropertyNam"
  },
  {
    "path": "public/js/filament/forms/components/file-upload.js",
    "chars": 277399,
    "preview": "var Go=Object.defineProperty;var Uo=(e,t)=>{for(var i in t)Go(e,i,{get:t[i],enumerable:!0})};var ea={};Uo(ea,{FileOrigin"
  },
  {
    "path": "public/js/filament/forms/components/key-value.js",
    "chars": 974,
    "preview": "function r({state:i}){return{state:i,rows:[],shouldUpdateRows:!0,init:function(){this.updateRows(),this.rows.length<=0?t"
  },
  {
    "path": "public/js/filament/forms/components/markdown-editor.js",
    "chars": 520923,
    "preview": "var ss=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var Td=Object.getOwnPropertyNames;var Ld=Object.prot"
  },
  {
    "path": "public/js/filament/forms/components/rich-editor.js",
    "chars": 229490,
    "preview": "var et=Object.create;var Z=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyName"
  },
  {
    "path": "public/js/filament/forms/components/select.js",
    "chars": 97203,
    "preview": "var lt=Object.create;var Ge=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var ut=Object.getOwnPropertyNam"
  },
  {
    "path": "public/js/filament/forms/components/tags-input.js",
    "chars": 849,
    "preview": "function i({state:a,splitKeys:n}){return{newTag:\"\",state:a,createTag:function(){if(this.newTag=this.newTag.trim(),this.n"
  },
  {
    "path": "public/js/filament/forms/components/textarea.js",
    "chars": 216,
    "preview": "function t({initialHeight:e}){return{init:function(){this.render()},render:function(){this.$el.scrollHeight>0&&(this.$el"
  },
  {
    "path": "public/js/filament/notifications/notifications.js",
    "chars": 6879,
    "preview": "(()=>{var O=Object.create;var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyN"
  },
  {
    "path": "public/js/filament/support/async-alpine.js",
    "chars": 5266,
    "preview": "(()=>{(()=>{var d=Object.defineProperty,m=t=>d(t,\"__esModule\",{value:!0}),f=(t,e)=>{m(t);for(var i in e)d(t,i,{get:e[i],"
  },
  {
    "path": "public/js/filament/support/support.js",
    "chars": 131356,
    "preview": "(()=>{var jo=Object.create;var Di=Object.defineProperty;var Bo=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPrope"
  },
  {
    "path": "public/js/filament/tables/components/table.js",
    "chars": 2294,
    "preview": "function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],shouldCheckUniqueSelection:!0,init:function(){thi"
  },
  {
    "path": "public/js/filament/widgets/components/chart.js",
    "chars": 267255,
    "preview": "function Ft(){}var Mo=function(){let s=0;return function(){return s++}}();function R(s){return s===null||typeof s>\"u\"}fu"
  },
  {
    "path": "public/js/filament/widgets/components/stats-overview/stat/chart.js",
    "chars": 196831,
    "preview": "function rt(){}var Hs=function(){let i=0;return function(){return i++}}();function T(i){return i===null||typeof i>\"u\"}fu"
  },
  {
    "path": "public/robots.txt",
    "chars": 24,
    "preview": "User-agent: *\nDisallow:\n"
  },
  {
    "path": "public/vendor/horizon/app-dark.css",
    "chars": 154388,
    "preview": "@charset \"UTF-8\";.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace!important}.vjs-tree.is-r"
  },
  {
    "path": "public/vendor/horizon/app.css",
    "chars": 2734,
    "preview": ".vjs-tree-brackets{cursor:pointer}.vjs-tree-brackets:hover{color:#1890ff}.vjs-check-controller{position:absolute;left:0}"
  },
  {
    "path": "public/vendor/horizon/app.js",
    "chars": 1357973,
    "preview": "var yf=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var N9=yf((B9,Ob)=>{function ZO(t,e){return function(){re"
  },
  {
    "path": "public/vendor/horizon/manifest.json",
    "chars": 904,
    "preview": "{\n  \"resources/img/favicon.png\": {\n    \"file\": \"favicon.png\",\n    \"src\": \"resources/img/favicon.png\",\n    \"integrity\": \""
  },
  {
    "path": "public/vendor/horizon/mix-manifest.json",
    "chars": 441,
    "preview": "{\n    \"/app.js\": \"/app.js?id=4999da9248177ed487693daec2a7d3fe\",\n    \"/app-dark.css\": \"/app-dark.css?id=dcaca44a9f0f1d019"
  },
  {
    "path": "public/vendor/horizon/styles-dark.css",
    "chars": 153844,
    "preview": "@charset \"UTF-8\";.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace!important}.vjs-tree.is-r"
  },
  {
    "path": "public/vendor/horizon/styles.css",
    "chars": 153454,
    "preview": "@charset \"UTF-8\";.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace!important}.vjs-tree.is-r"
  },
  {
    "path": "public/vendor/telescope/app-dark.css",
    "chars": 150136,
    "preview": "@charset \"UTF-8\";.form-control:-moz-focusring{text-shadow:none!important}\n\n/*!\n * Bootstrap v4.6.2 (https://getbootstrap"
  },
  {
    "path": "public/vendor/telescope/app.css",
    "chars": 149920,
    "preview": "@charset \"UTF-8\";\n/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Co"
  },
  {
    "path": "public/vendor/telescope/app.js",
    "chars": 1521521,
    "preview": "/*! For license information please see app.js.LICENSE.txt */\n(()=>{var t,e={2110:(t,e,n)=>{\"use strict\";var o=Object.fre"
  },
  {
    "path": "public/vendor/telescope/mix-manifest.json",
    "chars": 203,
    "preview": "{\n    \"/app.js\": \"/app.js?id=7049e92a398e816f8cd53a915eaea592\",\n    \"/app-dark.css\": \"/app-dark.css?id=1ea407db56c5163ae"
  },
  {
    "path": "resources/css/app.css",
    "chars": 59,
    "preview": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "resources/js/app.js",
    "chars": 96,
    "preview": "import './bootstrap';\n\nimport Alpine from 'alpinejs';\n\nwindow.Alpine = Alpine;\n\nAlpine.start();\n"
  },
  {
    "path": "resources/js/bootstrap.js",
    "chars": 374,
    "preview": "import axios from 'axios';\nwindow.axios = axios;\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpReq"
  },
  {
    "path": "resources/js/echo.js",
    "chars": 458,
    "preview": "import Echo from 'laravel-echo';\n\nimport Pusher from 'pusher-js';\nwindow.Pusher = Pusher;\n\nwindow.Echo = new Echo({\n    "
  },
  {
    "path": "resources/views/filament/footer.blade.php",
    "chars": 437,
    "preview": "<footer class=\"fixed bottom-0 left-0 z-20 w-full p-4 bg-white border-t border-gray-200 shadow md:flex md:items-center md"
  },
  {
    "path": "resources/views/filament/pages/create-panel-page.blade.php",
    "chars": 54,
    "preview": "<x-filament-panels::page>\n\n</x-filament-panels::page>\n"
  },
  {
    "path": "resources/views/filament/pages/panel-deployment-page.blade.php",
    "chars": 2362,
    "preview": "<x-filament-panels::page>\n\n    <div class=\"\">\n        @if(!$deployment)\n            <div class=\"\">\n                @if($"
  },
  {
    "path": "resources/views/filament/pages/panel-module-management.blade.php",
    "chars": 727,
    "preview": "<x-filament-panels::page>\n    <div class=\"flex flex-row gap-4\">\n        @foreach($modules as $slug => $title)\n          "
  },
  {
    "path": "resources/views/filament/pages/panels/edit-panel.blade.php",
    "chars": 54,
    "preview": "<x-filament-panels::page>\n\n</x-filament-panels::page>\n"
  },
  {
    "path": "resources/views/filament/pages/panels-create-panel.blade.php",
    "chars": 54,
    "preview": "<x-filament-panels::page>\n\n</x-filament-panels::page>\n"
  },
  {
    "path": "resources/views/filament/pages/panels-edit-panel.blade.php",
    "chars": 54,
    "preview": "<x-filament-panels::page>\n\n</x-filament-panels::page>\n"
  },
  {
    "path": "resources/views/filament/pages/panels-panels-list.blade.php",
    "chars": 394,
    "preview": "<x-filament-panels::page>\n\n    <div class=\"\">\n        @foreach($panels as $panel)\n            <div class=\"\">\n           "
  },
  {
    "path": "routes/auth.php",
    "chars": 2360,
    "preview": "<?php\n\nuse App\\Http\\Controllers\\Auth\\AuthenticatedSessionController;\nuse App\\Http\\Controllers\\Auth\\ConfirmablePasswordCo"
  },
  {
    "path": "routes/console.php",
    "chars": 220,
    "preview": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\nuse Illuminate\\Support\\Facades\\Artisan;\n\nArtisan::command('inspire', functio"
  },
  {
    "path": "routes/web.php",
    "chars": 80,
    "preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::redirect('/', '/builder');\n"
  },
  {
    "path": "storage/app/.gitignore",
    "chars": 23,
    "preview": "*\n!public/\n!.gitignore\n"
  },
  {
    "path": "storage/debugbar/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/.gitignore",
    "chars": 119,
    "preview": "compiled.php\nconfig.php\ndown\nevents.scanned.php\nmaintenance.php\nroutes.php\nroutes.scanned.php\nschedule-*\nservices.json\n"
  },
  {
    "path": "storage/framework/cache/.gitignore",
    "chars": 21,
    "preview": "*\n!data/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/sessions/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/testing/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/views/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "storage/logs/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "systems/generators/filament3/composer.json",
    "chars": 456,
    "preview": "{\n  \"name\": \"generators/filament3\",\n  \"type\": \"project\",\n  \"license\": \"MIT\",\n  \"authors\": [\n    {\n      \"name\": \"Laravel"
  },
  {
    "path": "systems/generators/filament3/src/Filament3ServiceProvider.php",
    "chars": 301,
    "preview": "<?php\n\nnamespace Generators\\Filament3;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass Filament3ServiceProvider extends "
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/BaseField.php",
    "chars": 4035,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Ne"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/BelongsToField.php",
    "chars": 2956,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Exception;\nuse Generators\\Laravel11\\Generators\\MigrationLi"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/BelongsToManyField.php",
    "chars": 3366,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Exception;\nuse Generators\\Laravel11\\Generators\\MigrationLi"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/CheckboxField.php",
    "chars": 730,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/DateField.php",
    "chars": 922,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/DateTimeField.php",
    "chars": 938,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/EmailField.php",
    "chars": 691,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/FileField.php",
    "chars": 691,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/FloatField.php",
    "chars": 1161,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/IdField.php",
    "chars": 619,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/ImageField.php",
    "chars": 693,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/MoneyField.php",
    "chars": 955,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/PasswordField.php",
    "chars": 848,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/RetrieveGeneratorForField.php",
    "chars": 1166,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\n\nclass"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/TextAreaField.php",
    "chars": 691,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Fields/TextField.php",
    "chars": 690,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Fields;\n\nuse Generators\\Laravel11\\Generators\\MigrationLineGenerator;\n\nc"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/CreateFile.php",
    "chars": 478,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\nclass CreateFile implements FileBase\n{\n    /**\n     * @var arra"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/EditFile.php",
    "chars": 474,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\nclass EditFile implements FileBase\n{\n    /**\n     * @var array<"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/FileBase.php",
    "chars": 252,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\ninterface FileBase\n{\n    public function generate(): string;\n\n "
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/FileReplacements.php",
    "chars": 9648,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\nuse const PHP_EOL;\n\nuse App\\Models\\Crud;\nuse Generators\\Filamen"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/ListFile.php",
    "chars": 474,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\nclass ListFile implements FileBase\n{\n    /**\n     * @var array<"
  },
  {
    "path": "systems/generators/filament3/src/Generators/Files/ResourceFile.php",
    "chars": 478,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Generators\\Files;\n\nclass ResourceFile implements FileBase\n{\n    /**\n     * @var ar"
  },
  {
    "path": "systems/generators/filament3/src/IndentsLines.php",
    "chars": 390,
    "preview": "<?php\n\nnamespace Generators\\Filament3;\n\ntrait IndentsLines\n{\n    protected function indentString(string $string, int $le"
  },
  {
    "path": "systems/generators/filament3/src/Jobs/CreateCreateFileJob.php",
    "chars": 1855,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/filament3/src/Jobs/CreateCrudJob.php",
    "chars": 1909,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/filament3/src/Jobs/CreateEditFileJob.php",
    "chars": 1829,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/filament3/src/Jobs/CreateListFileJob.php",
    "chars": 1829,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/filament3/src/Jobs/CreateResourceFileJob.php",
    "chars": 1845,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/filament3/src/Modules/AssetManagementModule.php",
    "chars": 17475,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Modules;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse App\\Interface"
  },
  {
    "path": "systems/generators/filament3/src/Modules/BaseModule.php",
    "chars": 10254,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Modules;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse App\\Interface"
  },
  {
    "path": "systems/generators/filament3/src/Modules/ClientManagementModule.php",
    "chars": 35257,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Modules;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse App\\Interface"
  },
  {
    "path": "systems/generators/filament3/src/Modules/ModuleManager.php",
    "chars": 533,
    "preview": "<?php\n\nnamespace Generators\\Filament3\\Modules;\n\nuse App\\Interfaces\\ModuleBase;\nuse Nette\\NotImplementedException;\n\nclass"
  },
  {
    "path": "systems/generators/filament3/src/templates/createPage.blade.php",
    "chars": 256,
    "preview": "\nnamespace {!! $namespace !!};\n\nuse {!! $resource !!};\nuse Filament\\Actions;\nuse {!! $baseResourcePage !!};\n\nclass {!! $"
  },
  {
    "path": "systems/generators/filament3/src/templates/editPage.blade.php",
    "chars": 363,
    "preview": "\nnamespace {!! $namespace !!};\n\nuse {!! $resource !!};\nuse Filament\\Actions;\nuse {!! $baseResourcePage !!};\n\nclass {!! $"
  },
  {
    "path": "systems/generators/filament3/src/templates/listPage.blade.php",
    "chars": 388,
    "preview": "\nnamespace {!! $namespace !!};\n\nuse {!! $resource !!};\nuse Filament\\Actions;\nuse {!! $baseResourcePage !!};\n\nclass {!! $"
  },
  {
    "path": "systems/generators/filament3/src/templates/resource.blade.php",
    "chars": 1208,
    "preview": "\n\nnamespace {!! $namespace !!};\n\nuse {!! $resource !!}\\Pages;\nuse {!! $resource !!}\\RelationManagers;\nuse App\\Models\\{!!"
  },
  {
    "path": "systems/generators/laravel11/composer.json",
    "chars": 456,
    "preview": "{\n  \"name\": \"generators/laravel11\",\n  \"type\": \"project\",\n  \"license\": \"MIT\",\n  \"authors\": [\n    {\n      \"name\": \"Laravel"
  },
  {
    "path": "systems/generators/laravel11/src/Generators/MigrationGenerator.php",
    "chars": 4850,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Generators;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Cru"
  },
  {
    "path": "systems/generators/laravel11/src/Generators/MigrationLineGenerator.php",
    "chars": 2971,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Generators;\n\nclass MigrationLineGenerator\n{\n    private string $type = 'string';\n\n"
  },
  {
    "path": "systems/generators/laravel11/src/Generators/ModelGenerator.php",
    "chars": 4172,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Generators;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Cru"
  },
  {
    "path": "systems/generators/laravel11/src/Jobs/CreateManyToManyMigrationJob.php",
    "chars": 2731,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Jobs;\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;"
  },
  {
    "path": "systems/generators/laravel11/src/Jobs/CreateMigrationJob.php",
    "chars": 1684,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/laravel11/src/Jobs/CreateModelJob.php",
    "chars": 1619,
    "preview": "<?php\n\nnamespace Generators\\Laravel11\\Jobs;\n\nuse App\\Enums\\CrudTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\Panel;\nuse App"
  },
  {
    "path": "systems/generators/laravel11/src/Laravel11ServiceProvider.php",
    "chars": 301,
    "preview": "<?php\n\nnamespace Generators\\Laravel11;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass Laravel11ServiceProvider extends "
  },
  {
    "path": "systems/generators/laravel11/src/templates/cacheTable.blade.php",
    "chars": 843,
    "preview": "\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\"
  },
  {
    "path": "systems/generators/laravel11/src/templates/jobsTable.blade.php",
    "chars": 1806,
    "preview": "\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\"
  },
  {
    "path": "systems/generators/laravel11/src/templates/migration.blade.php",
    "chars": 336,
    "preview": "use Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\S"
  },
  {
    "path": "systems/generators/laravel11/src/templates/model.blade.php",
    "chars": 319,
    "preview": "namespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;{{ $uses }}\n"
  },
  {
    "path": "systems/generators/laravel11/src/templates/sessionTable.blade.php",
    "chars": 837,
    "preview": "\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\"
  },
  {
    "path": "tailwind.config.js",
    "chars": 541,
    "preview": "import defaultTheme from 'tailwindcss/defaultTheme';\nimport forms from '@tailwindcss/forms';\n\n/** @type {import('tailwin"
  },
  {
    "path": "tests/Feature/Crud/CrudFieldsTest.php",
    "chars": 3618,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Enums\\CrudFieldValidation;\nuse App\\Enums\\CrudTypes;\nuse App\\Enums\\PanelType"
  },
  {
    "path": "tests/Feature/Crud/CrudTest.php",
    "chars": 6947,
    "preview": "<?php\n\nuse App\\Enums\\CrudTypes;\nuse App\\Enums\\PanelTypes;\nuse App\\Filament\\Resources\\CrudResource\\Pages\\CreateCrud;\nuse "
  },
  {
    "path": "tests/Feature/Filament3/Fields/BelongsToFieldTest.php",
    "chars": 9789,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\CrudField;\nuse App\\Models\\CrudFieldOptions;\nuse"
  },
  {
    "path": "tests/Feature/Filament3/Fields/BelongsToManyFieldTest.php",
    "chars": 10294,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\Crud;\nuse App\\Models\\CrudField;\nuse App\\Models\\CrudFieldOptions;\nuse"
  },
  {
    "path": "tests/Feature/Filament3/Fields/CheckboxFieldTest.php",
    "chars": 4683,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/DateFieldTest.php",
    "chars": 4609,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/DateTimeFieldTest.php",
    "chars": 4705,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/EmailFieldTest.php",
    "chars": 4867,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/FileFieldTest.php",
    "chars": 4631,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/FloatFieldTest.php",
    "chars": 4923,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/IdFieldTest.php",
    "chars": 1383,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  },
  {
    "path": "tests/Feature/Filament3/Fields/ImageFieldTest.php",
    "chars": 3715,
    "preview": "<?php\n\nuse App\\Enums\\CrudFieldTypes;\nuse App\\Models\\CrudField;\nuse Generators\\Filament3\\Generators\\Fields\\RetrieveGenera"
  }
]

// ... and 16 more files (download for full content)

About this extraction

This page contains the full source code of the LaravelDaily/FilaStart GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 216 files (6.0 MB), approximately 1.6M tokens, and a symbol index with 7438 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!