Showing preview only (4,911K chars total). Download the full file or copy to clipboard to get everything.
Repository: aschmelyun/laravel-job-board
Branch: main
Commit: 4a3c222dba17
Files: 136
Total size: 4.7 MB
Directory structure:
gitextract_wlq1uio1/
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── LICENSE
├── README.md
├── app/
│ ├── Console/
│ │ └── Kernel.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Auth/
│ │ │ │ ├── AuthenticatedSessionController.php
│ │ │ │ ├── ConfirmablePasswordController.php
│ │ │ │ ├── NewPasswordController.php
│ │ │ │ └── PasswordResetLinkController.php
│ │ │ ├── Controller.php
│ │ │ └── ListingController.php
│ │ ├── Kernel.php
│ │ ├── Middleware/
│ │ │ ├── Authenticate.php
│ │ │ ├── EncryptCookies.php
│ │ │ ├── PreventRequestsDuringMaintenance.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ ├── TrimStrings.php
│ │ │ ├── TrustHosts.php
│ │ │ ├── TrustProxies.php
│ │ │ └── VerifyCsrfToken.php
│ │ └── Requests/
│ │ └── Auth/
│ │ └── LoginRequest.php
│ ├── Models/
│ │ ├── Click.php
│ │ ├── Listing.php
│ │ ├── Tag.php
│ │ └── User.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── View/
│ └── Components/
│ ├── AppLayout.php
│ └── GuestLayout.php
├── artisan
├── bootstrap/
│ ├── app.php
│ └── cache/
│ └── .gitignore
├── composer.json
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cors.php
│ ├── database.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ ├── ListingFactory.php
│ │ ├── TagFactory.php
│ │ └── UserFactory.php
│ ├── migrations/
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2019_05_03_000001_create_customer_columns.php
│ │ ├── 2019_05_03_000002_create_subscriptions_table.php
│ │ ├── 2019_05_03_000003_create_subscription_items_table.php
│ │ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ │ ├── 2021_06_16_045807_create_listings_table.php
│ │ ├── 2021_06_16_050029_create_clicks_table.php
│ │ ├── 2021_06_16_050037_create_tags_table.php
│ │ └── 2021_06_16_050053_create_listing_tag_table.php
│ └── seeders/
│ └── DatabaseSeeder.php
├── package.json
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── css/
│ │ └── app.css
│ ├── index.php
│ ├── js/
│ │ └── app.js
│ ├── mix-manifest.json
│ ├── robots.txt
│ └── web.config
├── resources/
│ ├── css/
│ │ └── app.css
│ ├── js/
│ │ ├── app.js
│ │ └── bootstrap.js
│ ├── lang/
│ │ └── en/
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views/
│ ├── auth/
│ │ ├── confirm-password.blade.php
│ │ ├── forgot-password.blade.php
│ │ ├── login.blade.php
│ │ ├── register.blade.php
│ │ ├── reset-password.blade.php
│ │ └── verify-email.blade.php
│ ├── components/
│ │ ├── application-logo.blade.php
│ │ ├── auth-card.blade.php
│ │ ├── auth-session-status.blade.php
│ │ ├── auth-validation-errors.blade.php
│ │ ├── button.blade.php
│ │ ├── dropdown-link.blade.php
│ │ ├── dropdown.blade.php
│ │ ├── footer.blade.php
│ │ ├── header.blade.php
│ │ ├── hero.blade.php
│ │ ├── input.blade.php
│ │ ├── label.blade.php
│ │ ├── nav-link.blade.php
│ │ └── responsive-nav-link.blade.php
│ ├── dashboard.blade.php
│ ├── layouts/
│ │ ├── app.blade.php
│ │ ├── guest.blade.php
│ │ └── navigation.blade.php
│ ├── listings/
│ │ ├── create.blade.php
│ │ ├── index.blade.php
│ │ └── show.blade.php
│ └── welcome.blade.php
├── routes/
│ ├── api.php
│ ├── auth.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── server.php
├── storage/
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ ├── testing/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
├── tailwind.config.js
├── tests/
│ ├── CreatesApplication.php
│ ├── Feature/
│ │ ├── AuthenticationTest.php
│ │ ├── EmailVerificationTest.php
│ │ ├── ExampleTest.php
│ │ ├── PasswordConfirmationTest.php
│ │ ├── PasswordResetTest.php
│ │ └── RegistrationTest.php
│ ├── TestCase.php
│ └── Unit/
│ └── ExampleTest.php
└── webpack.mix.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
================================================
FILE: .gitattributes
================================================
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode
================================================
FILE: .styleci.yml
================================================
php:
preset: laravel
disabled:
- no_unused_imports
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2021 Andrew Schmelyun
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
## Laravel Job Board
This is an open-source job board application powered by Laravel, origially built for a [video tutorial series](https://www.youtube.com/watch?v=4ZrOXG2B0dU&list=PL36CGZHZJqsWs907QwJrWSbN2g2NNPn6w&index=1) on YouTube. The goal of this is to let you self-host your own job board website, similar to larajobs.com or remoteok.io.
Included currently are features like:
- Individual SEO-friendly listing pages
- Payment processing through Stripe
- User account authentication
- A simple, mobile-friendly layout with TailwindCSS
**Note:** If you are coming from YouTube and are looking for the original code from the tutorial series, please see the [video-source](https://github.com/aschmelyun/laravel-job-board/tree/video-source) branch.
## Contributing
If you found a bug or would like to request a new feature, feel free to [create an issue](https://github.com/aschmelyun/laravel-job-board/issues/new) on this repo. Depending on how complex or elaborate it is, it will potentially be used as future content added on to the original video tutorial series. Pull requests are also welcome, and will be evaluated on a case-by-case basis!
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
================================================
FILE: app/Console/Kernel.php
================================================
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
================================================
FILE: app/Exceptions/Handler.php
================================================
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
//
});
}
}
================================================
FILE: app/Http/Controllers/Auth/AuthenticatedSessionController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthenticatedSessionController extends Controller
{
/**
* Display the login view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.login');
}
/**
* Handle an incoming authentication request.
*
* @param \App\Http\Requests\Auth\LoginRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(LoginRequest $request)
{
$request->authenticate();
$request->session()->regenerate();
return redirect()->intended(RouteServiceProvider::HOME);
}
/**
* Destroy an authenticated session.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}
================================================
FILE: app/Http/Controllers/Auth/ConfirmablePasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;
class ConfirmablePasswordController extends Controller
{
/**
* Show the confirm password view.
*
* @return \Illuminate\View\View
*/
public function show()
{
return view('auth.confirm-password');
}
/**
* Confirm the user's password.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function store(Request $request)
{
if (! Auth::guard('web')->validate([
'email' => $request->user()->email,
'password' => $request->password,
])) {
throw ValidationException::withMessages([
'password' => __('auth.password'),
]);
}
$request->session()->put('auth.password_confirmed_at', time());
return redirect()->intended(RouteServiceProvider::HOME);
}
}
================================================
FILE: app/Http/Controllers/Auth/NewPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
use Illuminate\Validation\Rules;
class NewPasswordController extends Controller
{
/**
* Display the password reset view.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function create(Request $request)
{
return view('auth.reset-password', ['request' => $request]);
}
/**
* Handle an incoming new password request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'token' => 'required',
'email' => 'required|email',
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
// Here we will attempt to reset the user's password. If it is successful we
// will update the password on an actual user model and persist it to the
// database. Otherwise we will parse the error and return the response.
$status = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user) use ($request) {
$user->forceFill([
'password' => Hash::make($request->password),
'remember_token' => Str::random(60),
])->save();
event(new PasswordReset($user));
}
);
// If the password was successfully reset, we will redirect the user back to
// the application's home authenticated view. If there is an error we can
// redirect them back to where they came from with their error message.
return $status == Password::PASSWORD_RESET
? redirect()->route('login')->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}
================================================
FILE: app/Http/Controllers/Auth/PasswordResetLinkController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class PasswordResetLinkController extends Controller
{
/**
* Display the password reset link request view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.forgot-password');
}
/**
* Handle an incoming password reset link request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'email' => 'required|email',
]);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$status = Password::sendResetLink(
$request->only('email')
);
return $status == Password::RESET_LINK_SENT
? back()->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
================================================
FILE: app/Http/Controllers/ListingController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Models\Listing;
use App\Models\Tag;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class ListingController extends Controller
{
public function index(Request $request)
{
$query = Listing::query()
->where('is_active', true)
->with('tags')
->latest();
if ($request->has('s')) {
$searchQuery = trim($request->get('s'));
$query->where(function (Builder $builder) use ($searchQuery) {
$builder
->orWhere('title', 'like', "%{$searchQuery}%")
->orWhere('company', 'like', "%{$searchQuery}%")
->orWhere('location', 'like', "%{$searchQuery}%");
});
}
if ($request->has('tag')) {
$tag = $request->get('tag');
$query->whereHas('tags', function (Builder $builder) use ($tag) {
$builder->where('slug', $tag);
});
}
$listings = $query->get();
$tags = Tag::orderBy('name')
->get();
return view('listings.index', compact('listings', 'tags'));
}
public function show(Listing $listing, Request $request)
{
return view('listings.show', compact('listing'));
}
public function apply(Listing $listing, Request $request)
{
$listing->clicks()
->create([
'user_agent' => $request->userAgent(),
'ip' => $request->ip()
]);
return redirect()->to($listing->apply_link);
}
public function create()
{
return view('listings.create');
}
public function store(Request $request)
{
// process the listing creation form
$validationArray = [
'title' => 'required',
'company' => 'required',
'logo' => 'file|max:2048',
'location' => 'required',
'apply_link' => 'required|url',
'content' => 'required',
'payment_method_id' => 'required'
];
if (!Auth::check()) {
$validationArray = array_merge($validationArray, [
'email' => 'required|email|unique:users',
'password' => 'required|confirmed|min:5',
'name' => 'required'
]);
}
$request->validate($validationArray);
// is a user signed in? if not, create one and authenticate
$user = Auth::user();
if (!$user) {
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password)
]);
$user->createAsStripeCustomer();
Auth::login($user);
}
// process the payment and create the listing
try {
$amount = 9900; // $99.00 USD in cents
if ($request->filled('is_highlighted')) {
$amount += 1900;
}
$user->charge($amount, $request->payment_method_id);
$md = new \ParsedownExtra();
$listing = $user->listings()
->create([
'title' => $request->title,
'slug' => Str::slug($request->title) . '-' . rand(1111, 9999),
'company' => $request->company,
'logo' => basename($request->file('logo')->store('public')),
'location' => $request->location,
'apply_link' => $request->apply_link,
'content' => $md->text($request->input('content')),
'is_highlighted' => $request->filled('is_highlighted'),
'is_active' => true
]);
foreach(explode(',', $request->tags) as $requestTag) {
$tag = Tag::firstOrCreate([
'slug' => Str::slug(trim($requestTag))
], [
'name' => ucwords(trim($requestTag))
]);
$tag->listings()->attach($listing->id);
}
return redirect()->route('dashboard');
} catch(\Exception $e) {
return redirect()->back()
->withErrors(['error' => $e->getMessage()]);
}
}
}
================================================
FILE: app/Http/Kernel.php
================================================
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
================================================
FILE: app/Http/Middleware/Authenticate.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}
================================================
FILE: app/Http/Middleware/EncryptCookies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}
================================================
FILE: app/Http/Middleware/TrustHosts.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}
================================================
FILE: app/Http/Middleware/TrustProxies.php
================================================
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
}
================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Requests/Auth/LoginRequest.php
================================================
<?php
namespace App\Http\Requests\Auth;
use Illuminate\Auth\Events\Lockout;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
class LoginRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|string|email',
'password' => 'required|string',
];
}
/**
* Attempt to authenticate the request's credentials.
*
* @return void
*
* @throws \Illuminate\Validation\ValidationException
*/
public function authenticate()
{
$this->ensureIsNotRateLimited();
if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
'email' => __('auth.failed'),
]);
}
RateLimiter::clear($this->throttleKey());
}
/**
* Ensure the login request is not rate limited.
*
* @return void
*
* @throws \Illuminate\Validation\ValidationException
*/
public function ensureIsNotRateLimited()
{
if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
return;
}
event(new Lockout($this));
$seconds = RateLimiter::availableIn($this->throttleKey());
throw ValidationException::withMessages([
'email' => trans('auth.throttle', [
'seconds' => $seconds,
'minutes' => ceil($seconds / 60),
]),
]);
}
/**
* Get the rate limiting throttle key for the request.
*
* @return string
*/
public function throttleKey()
{
return Str::lower($this->input('email')).'|'.$this->ip();
}
}
================================================
FILE: app/Models/Click.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Click extends Model
{
use HasFactory;
protected $guarded = [];
public function listing()
{
return $this->belongsTo(Listing::class);
}
}
================================================
FILE: app/Models/Listing.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Listing extends Model
{
use HasFactory;
protected $guarded = [];
public function getRouteKeyName()
{
return 'slug';
}
public function clicks()
{
return $this->hasMany(Click::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function tags()
{
return $this->belongsToMany(Tag::class);
}
}
================================================
FILE: app/Models/Tag.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
use HasFactory;
protected $guarded = [];
public function listings()
{
return $this->belongsToMany(Listing::class);
}
}
================================================
FILE: app/Models/User.php
================================================
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use HasFactory, Notifiable, Billable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
public function listings()
{
return $this->hasMany(Listing::class);
}
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}
================================================
FILE: app/Providers/AuthServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/dashboard';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
// protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}
================================================
FILE: app/View/Components/AppLayout.php
================================================
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class AppLayout extends Component
{
/**
* Get the view / contents that represents the component.
*
* @return \Illuminate\View\View
*/
public function render()
{
return view('layouts.app');
}
}
================================================
FILE: app/View/Components/GuestLayout.php
================================================
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class GuestLayout extends Component
{
/**
* Get the view / contents that represents the component.
*
* @return \Illuminate\View\View
*/
public function render()
{
return view('layouts.guest');
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any of our classes manually. It's great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bootstrap/app.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
App\Http\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;
================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore
================================================
FILE: composer.json
================================================
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"php": "^7.3|^8.0",
"erusev/parsedown-extra": "^0.8.1",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/cashier": "^13.1",
"laravel/framework": "^8.40",
"laravel/tinker": "^2.5"
},
"require-dev": {
"facade/ignition": "^2.5",
"fakerphp/faker": "^1.9.1",
"laravel/breeze": "^1.3",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.2",
"nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^9.3.3"
},
"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"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
================================================
FILE: config/app.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'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
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL', null),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Http' => Illuminate\Support\Facades\Http::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
// 'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
];
================================================
FILE: config/auth.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expire time is the number of minutes that the reset token should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => 10800,
];
================================================
FILE: config/broadcasting.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "ably", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
'ably' => [
'driver' => 'ably',
'key' => env('ABLY_KEY'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
================================================
FILE: config/cache.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| 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' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
'lock_connection' => null,
],
'file' => [
'driver' => 'file',
'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' => '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 a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),
];
================================================
FILE: config/cors.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Cross-Origin Resource Sharing (CORS) Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your settings for cross-origin resource sharing
| or "CORS". This determines what cross-origin operations may execute
| in web browsers. You are free to adjust these settings as needed.
|
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
================================================
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 all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'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('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
],
/*
|--------------------------------------------------------------------------
| 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 in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| 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 APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'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'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
],
];
================================================
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. Just store away!
|
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'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),
],
],
/*
|--------------------------------------------------------------------------
| 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/hashing.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon", "argon2id"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 1024,
'threads' => 2,
'time' => 2,
],
];
================================================
FILE: config/logging.php
================================================
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => SyslogUdpHandler::class,
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
],
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];
================================================
FILE: config/mail.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
================================================
FILE: config/queue.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for every one. Here you may define a default connection.
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
'after_commit' => false,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
'block_for' => 0,
'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
];
================================================
FILE: config/session.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION', null),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| While using one of the framework's cache driven session backends you may
| list a cache store that should be used for these sessions. This value
| must match with one of the application's configured cache "stores".
|
| Affects: "apc", "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE', null),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you when it can't be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" since this is a secure default value.
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => 'lax',
];
================================================
FILE: config/view.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];
================================================
FILE: database/.gitignore
================================================
*.sqlite*
================================================
FILE: database/factories/ListingFactory.php
================================================
<?php
namespace Database\Factories;
use App\Models\Listing;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class ListingFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Listing::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
$title = $this->faker->sentence(rand(5, 7));
$datetime = $this->faker->dateTimeBetween('-1 month', 'now');
$content = '';
for($i=0; $i < 5; $i++) {
$content .= '<p class="mb-4">' . $this->faker->sentences(rand(5, 10), true) . '</p>';
}
return [
'title' => $title,
'slug' => Str::slug($title) . '-' . rand(1111, 9999),
'company' => $this->faker->company,
'location' => $this->faker->country,
'logo' => basename($this->faker->image(storage_path('app/public'))),
'is_highlighted' => (rand(1, 9) > 7),
'is_active' => true,
'content' => $content,
'apply_link' => $this->faker->url,
'created_at' => $datetime,
'updated_at' => $datetime
];
}
}
================================================
FILE: database/factories/TagFactory.php
================================================
<?php
namespace Database\Factories;
use App\Models\Tag;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class TagFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Tag::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
$name = ucwords($this->faker->word);
return [
'name' => $name,
'slug' => Str::slug($name)
];
}
}
================================================
FILE: database/factories/UserFactory.php
================================================
<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class UserFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = User::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
}
================================================
FILE: database/migrations/2014_10_12_000000_create_users_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
================================================
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');
}
}
================================================
FILE: database/migrations/2019_05_03_000001_create_customer_columns.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCustomerColumns extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('stripe_id')->nullable()->index();
$table->string('pm_type')->nullable();
$table->string('pm_last_four', 4)->nullable();
$table->timestamp('trial_ends_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn([
'stripe_id',
'pm_type',
'pm_last_four',
'trial_ends_at',
]);
});
}
}
================================================
FILE: database/migrations/2019_05_03_000002_create_subscriptions_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSubscriptionsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('subscriptions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->string('name');
$table->string('stripe_id');
$table->string('stripe_status');
$table->string('stripe_price')->nullable();
$table->integer('quantity')->nullable();
$table->timestamp('trial_ends_at')->nullable();
$table->timestamp('ends_at')->nullable();
$table->timestamps();
$table->index(['user_id', 'stripe_status']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('subscriptions');
}
}
================================================
FILE: database/migrations/2019_05_03_000003_create_subscription_items_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSubscriptionItemsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('subscription_items', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('subscription_id');
$table->string('stripe_id')->index();
$table->string('stripe_product');
$table->string('stripe_price');
$table->integer('quantity')->nullable();
$table->timestamps();
$table->unique(['subscription_id', 'stripe_price']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('subscription_items');
}
}
================================================
FILE: database/migrations/2019_08_19_000000_create_failed_jobs_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateFailedJobsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('failed_jobs', function (Blueprint $table) {
$table->id();
$table->string('uuid')->unique();
$table->text('connection');
$table->text('queue');
$table->longText('payload');
$table->longText('exception');
$table->timestamp('failed_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('failed_jobs');
}
}
================================================
FILE: database/migrations/2021_06_16_045807_create_listings_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateListingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('listings', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->string('title');
$table->string('slug');
$table->string('company');
$table->string('location');
$table->string('logo')->nullable();
$table->boolean('is_highlighted')->default(false);
$table->boolean('is_active')->default(true);
$table->text('content');
$table->string('apply_link');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('listings');
}
}
================================================
FILE: database/migrations/2021_06_16_050029_create_clicks_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateClicksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('clicks', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('listing_id');
$table->text('user_agent')->nullable();
$table->string('ip')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('clicks');
}
}
================================================
FILE: database/migrations/2021_06_16_050037_create_tags_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tags', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('slug');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tags');
}
}
================================================
FILE: database/migrations/2021_06_16_050053_create_listing_tag_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateListingTagTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('listing_tag', function (Blueprint $table) {
$table->unsignedBigInteger('listing_id');
$table->unsignedBigInteger('tag_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('listing_tag');
}
}
================================================
FILE: database/seeders/DatabaseSeeder.php
================================================
<?php
namespace Database\Seeders;
use App\Models\Listing;
use App\Models\Tag;
use App\Models\User;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$tags = Tag::factory(10)->create();
User::factory(20)->create()->each(function($user) use($tags) {
Listing::factory(rand(1, 4))->create([
'user_id' => $user->id
])->each(function($listing) use($tags) {
$listing->tags()->attach($tags->random(2));
});
});
}
}
================================================
FILE: package.json
================================================
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production"
},
"devDependencies": {
"@tailwindcss/forms": "^0.2.1",
"alpinejs": "^2.7.3",
"autoprefixer": "^10.1.0",
"axios": "^0.21",
"laravel-mix": "^6.0.6",
"lodash": "^4.17.19",
"postcss": "^8.2.1",
"postcss-import": "^12.0.1",
"tailwindcss": "^2.0.2"
}
}
================================================
FILE: phpunit.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>
================================================
FILE: public/.htaccess
================================================
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
================================================
FILE: public/css/app.css
================================================
/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
/*
Document
========
*/
/**
Use a better box model (opinionated).
*/
*,
::before,
::after {
box-sizing: border-box;
}
/**
Use a more readable tab size (opinionated).
*/
html {
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
}
/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/*
Sections
========
*/
/**
Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/
body {
font-family:
system-ui,
-apple-system, /* Firefox supports this but not yet `system-ui` */
'Segoe UI',
Roboto,
Helvetica,
Arial,
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji';
}
/*
Grouping content
================
*/
/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/
hr {
height: 0; /* 1 */
color: inherit; /* 2 */
}
/*
Text-level semantics
====================
*/
/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
/**
Add the correct font weight in Edge and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
font-family:
ui-monospace,
SFMono-Regular,
Consolas,
'Liberation Mono',
Menlo,
monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/*
Tabular data
============
*/
/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/
table {
text-indent: 0; /* 1 */
border-color: inherit; /* 2 */
}
/*
Forms
=====
*/
/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button;
}
/**
Remove the inner border and padding in Firefox.
*/
::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
Restore the focus styles unset by the previous rule.
*/
:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/
:-moz-ui-invalid {
box-shadow: none;
}
/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/
legend {
padding: 0;
}
/**
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/**
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/*
Interactive
===========
*/
/*
Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}
/**
* Manually forked from SUIT CSS Base: https://github.com/suitcss/base
* A thin layer on top of normalize.css that provides a starting point more
* suitable for web applications.
*/
/**
* Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
margin: 0;
}
button {
background-color: transparent;
background-image: none;
}
/**
* Work around a Firefox/IE bug where the transparent `button` background
* results in a loss of the default `button` focus styles.
*/
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
fieldset {
margin: 0;
padding: 0;
}
ol,
ul {
list-style: none;
margin: 0;
padding: 0;
}
/**
* Tailwind custom reset styles
*/
/**
* 1. Use the user's configured `sans` font-family (with Tailwind's default
* sans-serif font stack as a fallback) as a sane default.
* 2. Use Tailwind's default "normal" line-height so the user isn't forced
* to override it to ensure consistency even when using the default theme.
*/
html {
font-family: Nunito, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
line-height: 1.5; /* 2 */
}
/**
* Inherit font-family and line-height from `html` so users can set them as
* a class directly on the `html` element.
*/
body {
font-family: inherit;
line-height: inherit;
}
/**
* 1. Prevent padding and border from affecting element width.
*
* We used to set this in the html element and inherit from
* the parent element for everything else. This caused issues
* in shadow-dom-enhanced elements like <details> where the content
* is wrapped by a div with box-sizing set to `content-box`.
*
* https://github.com/mozdevs/cssremedy/issues/4
*
*
* 2. Allow adding a border to an element by just adding a border-width.
*
* By default, the way the browser specifies that an element should have no
* border is by setting it's border-style to `none` in the user-agent
* stylesheet.
*
* In order to easily add borders to elements by just setting the `border-width`
* property, we change the default border-style for all elements to `solid`, and
* use border-width to hide them instead. This way our `border` utilities only
* need to set the `border-width` property instead of the entire `border`
* shorthand, making our border utilities much more straightforward to compose.
*
* https://github.com/tailwindcss/tailwindcss/pull/116
*/
*,
::before,
::after {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: currentColor; /* 2 */
}
/*
* Ensure horizontal rules are visible by default
*/
hr {
border-top-width: 1px;
}
/**
* Undo the `border-style: none` reset that Normalize applies to images so that
* our `border-{width}` utilities have the expected effect.
*
* The Normalize reset is unnecessary for us since we default the border-width
* to 0 on all elements.
*
* https://github.com/tailwindcss/tailwindcss/issues/362
*/
img {
border-style: solid;
}
textarea {
resize: vertical;
}
input::-moz-placeholder, textarea::-moz-placeholder {
opacity: 1;
color: #9ca3af;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
opacity: 1;
color: #9ca3af;
}
input::placeholder,
textarea::placeholder {
opacity: 1;
color: #9ca3af;
}
button,
[role="button"] {
cursor: pointer;
}
table {
border-collapse: collapse;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit;
}
/**
* Reset links to optimize for opt-in styling instead of
* opt-out.
*/
a {
color: inherit;
text-decoration: inherit;
}
/**
* Reset form element properties that are easy to forget to
* style explicitly so you don't inadvertently introduce
* styles that deviate from your design system. These styles
* supplement a partial reset that is already applied by
* normalize.css.
*/
button,
input,
optgroup,
select,
textarea {
padding: 0;
line-height: inherit;
color: inherit;
}
/**
* Use the configured 'mono' font family for elements that
* are expected to be rendered with a monospace font, falling
* back to the system monospace stack if there is no configured
* 'mono' font family.
*/
pre,
code,
kbd,
samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
/**
* 1. Make replaced elements `display: block` by default as that's
* the behavior you want almost all of the time. Inspired by
* CSS Remedy, with `svg` added as well.
*
* https://github.com/mozdevs/cssremedy/issues/14
*
* 2. Add `vertical-align: middle` to align replaced elements more
* sensibly by default when overriding `display` by adding a
* utility like `inline`.
*
* This can trigger a poorly considered linting error in some
* tools but is included by design.
*
* https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
display: block; /* 1 */
vertical-align: middle; /* 2 */
}
/**
* Constrain images and videos to the parent width and preserve
* their intrinsic aspect ratio.
*
* https://github.com/mozdevs/cssremedy/issues/14
*/
img,
video {
max-width: 100%;
height: auto;
}
*, ::before, ::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
[type='text'],
[type='email'],
[type='url'],
[type='password'],
[type='number'],
[type='date'],
[type='datetime-local'],
[type='month'],
[type='search'],
[type='tel'],
[type='time'],
[type='week'],
[multiple],
textarea,
select
{
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: #fff;
border-color: #6b7280;
border-width: 1px;
border-radius: 0px;
padding-top: 0.5rem;
padding-right: 0.75rem;
padding-bottom: 0.5rem;
padding-left: 0.75rem;
font-size: 1rem;
line-height: 1.5rem;
}
[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus {
outline: 2px solid transparent;
outline-offset: 2px;
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: #2563eb;
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
border-color: #2563eb;
}
input::-moz-placeholder, textarea::-moz-placeholder {
color: #6b7280;
opacity: 1;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
color: #6b7280;
opacity: 1;
}
input::placeholder, textarea::placeholder {
color: #6b7280;
opacity: 1;
}
::-webkit-datetime-edit-fields-wrapper {
padding: 0;
}
::-webkit-date-and-time-value {
min-height: 1.5em;
}
select {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
background-position: right 0.5rem center;
background-repeat: no-repeat;
background-size: 1.5em 1.5em;
padding-right: 2.5rem;
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
[multiple] {
background-image: initial;
background-position: initial;
background-repeat: unset;
background-size: initial;
padding-right: 0.75rem;
-webkit-print-color-adjust: unset;
color-adjust: unset;
}
[type='checkbox'],
[type='radio']
{
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding: 0;
-webkit-print-color-adjust: exact;
color-adjust: exact;
display: inline-block;
vertical-align: middle;
background-origin: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
flex-shrink: 0;
height: 1rem;
width: 1rem;
color: #2563eb;
background-color: #fff;
border-color: #6b7280;
border-width: 1px;
}
[type='checkbox'] {
border-radius: 0px;
}
[type='radio'] {
border-radius: 100%;
}
[type='checkbox']:focus,
[type='radio']:focus
{
outline: 2px solid transparent;
outline-offset: 2px;
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
--tw-ring-offset-width: 2px;
--tw-ring-offset-color: #fff;
--tw-ring-color: #2563eb;
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
[type='checkbox']:checked,
[type='radio']:checked
{
border-color: transparent;
background-color: currentColor;
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
}
[type='checkbox']:checked {
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
}
[type='radio']:checked {
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
}
[type='checkbox']:checked:hover,
[type='checkbox']:checked:focus,
[type='radio']:checked:hover,
[type='radio']:checked:focus
{
border-color: transparent;
background-color: currentColor;
}
[type='checkbox']:indeterminate {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");
border-color: transparent;
background-color: currentColor;
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
}
[type='checkbox']:indeterminate:hover,
[type='checkbox']:indeterminate:focus
{
border-color: transparent;
background-color: currentColor;
}
[type='file'] {
background: unset;
border-color: inherit;
border-width: 0;
border-radius: 0;
padding: 0;
font-size: unset;
line-height: inherit;
}
[type='file']:focus {
outline: 1px auto -webkit-focus-ring-color;
}
.container {
width: 100%;
}
@media (min-width: 640px) {
.container {
max-width: 640px;
}
}
@media (min-width: 768px) {
.container {
max-width: 768px;
}
}
@media (min-width: 1024px) {
.container {
max-width: 1024px;
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px;
}
}
@media (min-width: 1536px) {
.container {
max-width: 1536px;
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.not-sr-only {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.focus-within\:sr-only:focus-within {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.focus-within\:not-sr-only:focus-within {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.focus\:sr-only:focus {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.focus\:not-sr-only:focus {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.pointer-events-none {
pointer-events: none;
}
.pointer-events-auto {
pointer-events: auto;
}
.visible {
visibility: visible;
}
.invisible {
visibility: hidden;
}
.static {
position: static;
}
.fixed {
position: fixed;
}
.absolute {
position: absolute;
}
.relative {
position: relative;
}
.sticky {
position: sticky;
}
.inset-0 {
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
.inset-1 {
top: 0.25rem;
right: 0.25rem;
bottom: 0.25rem;
left: 0.25rem;
}
.inset-2 {
top: 0.5rem;
right: 0.5rem;
bottom: 0.5rem;
left: 0.5rem;
}
.inset-3 {
top: 0.75rem;
right: 0.75rem;
bottom: 0.75rem;
left: 0.75rem;
}
.inset-4 {
top: 1rem;
right: 1rem;
bottom: 1rem;
left: 1rem;
}
.inset-5 {
top: 1.25rem;
right: 1.25rem;
bottom: 1.25rem;
left: 1.25rem;
}
.inset-6 {
top: 1.5rem;
right: 1.5rem;
bottom: 1.5rem;
left: 1.5rem;
}
.inset-7 {
top: 1.75rem;
right: 1.75rem;
bottom: 1.75rem;
left: 1.75rem;
}
.inset-8 {
top: 2rem;
right: 2rem;
bottom: 2rem;
left: 2rem;
}
.inset-9 {
top: 2.25rem;
right: 2.25rem;
bottom: 2.25rem;
left: 2.25rem;
}
.inset-10 {
top: 2.5rem;
right: 2.5rem;
bottom: 2.5rem;
left: 2.5rem;
}
.inset-11 {
top: 2.75rem;
right: 2.75rem;
bottom: 2.75rem;
left: 2.75rem;
}
.inset-12 {
top: 3rem;
right: 3rem;
bottom: 3rem;
left: 3rem;
}
.inset-14 {
top: 3.5rem;
right: 3.5rem;
bottom: 3.5rem;
left: 3.5rem;
}
.inset-16 {
top: 4rem;
right: 4rem;
bottom: 4rem;
left: 4rem;
}
.inset-20 {
top: 5rem;
right: 5rem;
bottom: 5rem;
left: 5rem;
}
.inset-24 {
top: 6rem;
right: 6rem;
bottom: 6rem;
left: 6rem;
}
.inset-28 {
top: 7rem;
right: 7rem;
bottom: 7rem;
left: 7rem;
}
.inset-32 {
top: 8rem;
right: 8rem;
bottom: 8rem;
left: 8rem;
}
.inset-36 {
top: 9rem;
right: 9rem;
bottom: 9rem;
left: 9rem;
}
.inset-40 {
top: 10rem;
right: 10rem;
bottom: 10rem;
left: 10rem;
}
.inset-44 {
top: 11rem;
right: 11rem;
bottom: 11rem;
left: 11rem;
}
.inset-48 {
top: 12rem;
right: 12rem;
bottom: 12rem;
left: 12rem;
}
.inset-52 {
top: 13rem;
right: 13rem;
bottom: 13rem;
left: 13rem;
}
.inset-56 {
top: 14rem;
right: 14rem;
bottom: 14rem;
left: 14rem;
}
.inset-60 {
top: 15rem;
right: 15rem;
bottom: 15rem;
left: 15rem;
}
.inset-64 {
top: 16rem;
right: 16rem;
bottom: 16rem;
left: 16rem;
}
.inset-72 {
top: 18rem;
right: 18rem;
bottom: 18rem;
left: 18rem;
}
.inset-80 {
top: 20rem;
right: 20rem;
bottom: 20rem;
left: 20rem;
}
.inset-96 {
top: 24rem;
right: 24rem;
bottom: 24rem;
left: 24rem;
}
.inset-auto {
top: auto;
right: auto;
bottom: auto;
left: auto;
}
.inset-px {
top: 1px;
right: 1px;
bottom: 1px;
left: 1px;
}
.inset-0\.5 {
top: 0.125rem;
right: 0.125rem;
bottom: 0.125rem;
left: 0.125rem;
}
.inset-1\.5 {
top: 0.375rem;
right: 0.375rem;
bottom: 0.375rem;
left: 0.375rem;
}
.inset-2\.5 {
top: 0.625rem;
right: 0.625rem;
bottom: 0.625rem;
left: 0.625rem;
}
.inset-3\.5 {
top: 0.875rem;
right: 0.875rem;
bottom: 0.875rem;
left: 0.875rem;
}
.-inset-0 {
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
.-inset-1 {
top: -0.25rem;
right: -0.25rem;
bottom: -0.25rem;
left: -0.25rem;
}
.-inset-2 {
top: -0.5rem;
right: -0.5rem;
bottom: -0.5rem;
left: -0.5rem;
}
.-inset-3 {
top: -0.75rem;
right: -0.75rem;
bottom: -0.75rem;
left: -0.75rem;
}
.-inset-4 {
top: -1rem;
right: -1rem;
bottom: -1rem;
left: -1rem;
}
.-inset-5 {
top: -1.25rem;
right: -1.25rem;
bottom: -1.25rem;
left: -1.25rem;
}
.-inset-6 {
top: -1.5rem;
right: -1.5rem;
bottom: -1.5rem;
left: -1.5rem;
}
.-inset-7 {
top: -1.75rem;
right: -1.75rem;
bottom: -1.75rem;
left: -1.75rem;
}
.-inset-8 {
top: -2rem;
right: -2rem;
bottom: -2rem;
left: -2rem;
}
.-inset-9 {
top: -2.25rem;
right: -2.25rem;
bottom: -2.25rem;
left: -2.25rem;
}
.-inset-10 {
top: -2.5rem;
right: -2.5rem;
bottom: -2.5rem;
left: -2.5rem;
}
.-inset-11 {
top: -2.75rem;
right: -2.75rem;
bottom: -2.75rem;
left: -2.75rem;
}
.-inset-12 {
top: -3rem;
right: -3rem;
bottom: -3rem;
left: -3rem;
}
.-inset-14 {
top: -3.5rem;
right: -3.5rem;
bottom: -3.5rem;
left: -3.5rem;
}
.-inset-16 {
top: -4rem;
right: -4rem;
bottom: -4rem;
left: -4rem;
}
.-inset-20 {
top: -5rem;
right: -5rem;
bottom: -5rem;
left: -5rem;
}
.-inset-24 {
top: -6rem;
right: -6rem;
bottom: -6rem;
left: -6rem;
}
.-inset-28 {
top: -7rem;
right: -7rem;
bottom: -7rem;
left: -7rem;
}
.-inset-32 {
top: -8rem;
right: -8rem;
bottom: -8rem;
left: -8rem;
}
.-inset-36 {
top: -9rem;
right: -9rem;
bottom: -9rem;
left: -9rem;
}
.-inset-40 {
top: -10rem;
right: -10rem;
bottom: -10rem;
left: -10rem;
}
.-inset-44 {
top: -11rem;
right: -11rem;
bottom: -11rem;
left: -11rem;
}
.-inset-48 {
top: -12rem;
right: -12rem;
bottom: -12rem;
left: -12rem;
}
.-inset-52 {
top: -13rem;
right: -13rem;
bottom: -13rem;
left: -13rem;
}
.-inset-56 {
top: -14rem;
right: -14rem;
bottom: -14rem;
left: -14rem;
}
.-inset-60 {
top: -15rem;
right: -15rem;
bottom: -15rem;
left: -15rem;
}
.-inset-64 {
top: -16rem;
right: -16rem;
bottom: -16rem;
left: -16rem;
}
.-inset-72 {
top: -18rem;
right: -18rem;
bottom: -18rem;
left: -18rem;
}
.-inset-80 {
top: -20rem;
right: -20rem;
bottom: -20rem;
left: -20rem;
}
.-inset-96 {
top: -24rem;
right: -24rem;
bottom: -24rem;
left: -24rem;
}
.-inset-px {
top: -1px;
right: -1px;
bottom: -1px;
left: -1px;
}
.-inset-0\.5 {
top: -0.125rem;
right: -0.125rem;
bottom: -0.125rem;
left: -0.125rem;
}
.-inset-1\.5 {
top: -0.375rem;
right: -0.375rem;
bottom: -0.375rem;
left: -0.375rem;
}
.-inset-2\.5 {
top: -0.625rem;
right: -0.625rem;
bottom: -0.625rem;
left: -0.625rem;
}
.-inset-3\.5 {
top: -0.875rem;
right: -0.875rem;
bottom: -0.875rem;
left: -0.875rem;
}
.inset-1\/2 {
top: 50%;
right: 50%;
bottom: 50%;
left: 50%;
}
.inset-1\/3 {
top: 33.333333%;
right: 33.333333%;
bottom: 33.333333%;
left: 33.333333%;
}
.inset-2\/3 {
top: 66.666667%;
right: 66.666667%;
bottom: 66.666667%;
left: 66.666667%;
}
.inset-1\/4 {
top: 25%;
right: 25%;
bottom: 25%;
left: 25%;
}
.inset-2\/4 {
top: 50%;
right: 50%;
bottom: 50%;
left: 50%;
}
.inset-3\/4 {
top: 75%;
right: 75%;
bottom: 75%;
left: 75%;
}
.inset-full {
top: 100%;
right: 100%;
bottom: 100%;
left: 100%;
}
.-inset-1\/2 {
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
}
.-inset-1\/3 {
top: -33.333333%;
right: -33.333333%;
bottom: -33.333333%;
left: -33.333333%;
}
.-inset-2\/3 {
top: -66.666667%;
right: -66.666667%;
bottom: -66.666667%;
left: -66.666667%;
}
.-inset-1\/4 {
top: -25%;
right: -25%;
bottom: -25%;
left: -25%;
}
.-inset-2\/4 {
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
}
.-inset-3\/4 {
top: -75%;
right: -75%;
bottom: -75%;
left: -75%;
}
.-inset-full {
top: -100%;
right: -100%;
bottom: -100%;
left: -100%;
}
.inset-x-0 {
left: 0px;
right: 0px;
}
.inset-x-1 {
left: 0.25rem;
right: 0.25rem;
}
.inset-x-2 {
left: 0.5rem;
right: 0.5rem;
}
.inset-x-3 {
left: 0.75rem;
right: 0.75rem;
}
.inset-x-4 {
left: 1rem;
right: 1rem;
}
.inset-x-5 {
left: 1.25rem;
right: 1.25rem;
}
.inset-x-6 {
left: 1.5rem;
right: 1.5rem;
}
.inset-x-7 {
left: 1.75rem;
right: 1.75rem;
}
.inset-x-8 {
left: 2rem;
right: 2rem;
}
.inset-x-9 {
left: 2.25rem;
right: 2.25rem;
}
.inset-x-10 {
left: 2.5rem;
right: 2.5rem;
}
.inset-x-11 {
left: 2.75rem;
right: 2.75rem;
}
.inset-x-12 {
left: 3rem;
right: 3rem;
}
.inset-x-14 {
left: 3.5rem;
right: 3.5rem;
}
.inset-x-16 {
left: 4rem;
right: 4rem;
}
.inset-x-20 {
left: 5rem;
right: 5rem;
}
.inset-x-24 {
left: 6rem;
right: 6rem;
}
.inset-x-28 {
left: 7rem;
right: 7rem;
}
.inset-x-32 {
left: 8rem;
right: 8rem;
}
.inset-x-36 {
left: 9rem;
right: 9rem;
}
.inset-x-40 {
left: 10rem;
right: 10rem;
}
.inset-x-44 {
left: 11rem;
right: 11rem;
}
.inset-x-48 {
left: 12rem;
right: 12rem;
}
.inset-x-52 {
left: 13rem;
right: 13rem;
}
.inset-x-56 {
left: 14rem;
right: 14rem;
}
.inset-x-60 {
left: 15rem;
right: 15rem;
}
.inset-x-64 {
left: 16rem;
right: 16rem;
}
.inset-x-72 {
left: 18rem;
right: 18rem;
}
.inset-x-80 {
left: 20rem;
right: 20rem;
}
.inset-x-96 {
left: 24rem;
right: 24rem;
}
.inset-x-auto {
left: auto;
right: auto;
}
.inset-x-px {
left: 1px;
right: 1px;
}
.inset-x-0\.5 {
left: 0.125rem;
right: 0.125rem;
}
.inset-x-1\.5 {
left: 0.375rem;
right: 0.375rem;
}
.inset-x-2\.5 {
left: 0.625rem;
right: 0.625rem;
}
.inset-x-3\.5 {
left: 0.875rem;
right: 0.875rem;
}
.-inset-x-0 {
left: 0px;
right: 0px;
}
.-inset-x-1 {
left: -0.25rem;
right: -0.25rem;
}
.-inset-x-2 {
left: -0.5rem;
right: -0.5rem;
}
.-inset-x-3 {
left: -0.75rem;
right: -0.75rem;
}
.-inset-x-4 {
left: -1rem;
right: -1rem;
}
.-inset-x-5 {
left: -1.25rem;
right: -1.25rem;
}
.-inset-x-6 {
left: -1.5rem;
right: -1.5rem;
}
.-inset-x-7 {
left: -1.75rem;
right: -1.75rem;
}
.-inset-x-8 {
left: -2rem;
right: -2rem;
}
.-inset-x-9 {
left: -2.25rem;
right: -2.25rem;
}
.-inset-x-10 {
left: -2.5rem;
right: -2.5rem;
}
.-inset-x-11 {
left: -2.75rem;
right: -2.75rem;
}
.-inset-x-12 {
left: -3rem;
right: -3rem;
}
.-inset-x-14 {
left: -3.5rem;
right: -3.5rem;
}
.-inset-x-16 {
left: -4rem;
right: -4rem;
}
.-inset-x-20 {
left: -5rem;
right: -5rem;
}
.-inset-x-24 {
left: -6rem;
right: -6rem;
}
.-inset-x-28 {
left: -7rem;
right: -7rem;
}
.-inset-x-32 {
left: -8rem;
right: -8rem;
}
.-inset-x-36 {
left: -9rem;
right: -9rem;
}
.-inset-x-40 {
left: -10rem;
right: -10rem;
}
.-inset-x-44 {
left: -11rem;
right: -11rem;
}
.-inset-x-48 {
left: -12rem;
right: -12rem;
}
.-inset-x-52 {
left: -13rem;
right: -13rem;
}
.-inset-x-56 {
left: -14rem;
right: -14rem;
}
.-inset-x-60 {
left: -15rem;
right: -15rem;
}
.-inset-x-64 {
left: -16rem;
right: -16rem;
}
.-inset-x-72 {
left: -18rem;
right: -18rem;
}
.-inset-x-80 {
left: -20rem;
right: -20rem;
}
.-inset-x-96 {
left: -24rem;
right: -24rem;
}
.-inset-x-px {
left: -1px;
right: -1px;
}
.-inset-x-0\.5 {
left: -0.125rem;
right: -0.125rem;
}
.-inset-x-1\.5 {
left: -0.375rem;
right: -0.375rem;
}
.-inset-x-2\.5 {
left: -0.625rem;
right: -0.625rem;
}
.-inset-x-3\.5 {
left: -0.875rem;
right: -0.875rem;
}
.inset-x-1\/2 {
left: 50%;
right: 50%;
}
.inset-x-1\/3 {
left: 33.333333%;
right: 33.333333%;
}
.inset-x-2\/3 {
left: 66.666667%;
right: 66.666667%;
}
.inset-x-1\/4 {
left: 25%;
right: 25%;
}
.inset-x-2\/4 {
left: 50%;
right: 50%;
}
.inset-x-3\/4 {
left: 75%;
right: 75%;
}
.inset-x-full {
left: 100%;
right: 100%;
}
.-inset-x-1\/2 {
left: -50%;
right: -50%;
}
.-inset-x-1\/3 {
left: -33.333333%;
right: -33.333333%;
}
.-inset-x-2\/3 {
left: -66.666667%;
right: -66.666667%;
}
.-inset-x-1\/4 {
left: -25%;
right: -25%;
}
.-inset-x-2\/4 {
left: -50%;
right: -50%;
}
.-inset-x-3\/4 {
left: -75%;
right: -75%;
}
.-inset-x-full {
left: -100%;
right: -100%;
}
.inset-y-0 {
top: 0px;
bottom: 0px;
}
.inset-y-1 {
top: 0.25rem;
bottom: 0.25rem;
}
.inset-y-2 {
top: 0.5rem;
bottom: 0.5rem;
}
.inset-y-3 {
top: 0.75rem;
bottom: 0.75rem;
}
.inset-y-4 {
top: 1rem;
bottom: 1rem;
}
.inset-y-5 {
top: 1.25rem;
bottom: 1.25rem;
}
.inset-y-6 {
top: 1.5rem;
bottom: 1.5rem;
}
.inset-y-7 {
top: 1.75rem;
bottom: 1.75rem;
}
.inset-y-8 {
top: 2rem;
bottom: 2rem;
}
.inset-y-9 {
top: 2.25rem;
bottom: 2.25rem;
}
.inset-y-10 {
top: 2.5rem;
bottom: 2.5rem;
}
.inset-y-11 {
top: 2.75rem;
bottom: 2.75rem;
}
.inset-y-12 {
top: 3rem;
bottom: 3rem;
}
.inset-y-14 {
top: 3.5rem;
bottom: 3.5rem;
}
.inset-y-16 {
top: 4rem;
bottom: 4rem;
}
.inset-y-20 {
top: 5rem;
bottom: 5rem;
}
.inset-y-24 {
top: 6rem;
bottom: 6rem;
}
.inset-y-28 {
top: 7rem;
bottom: 7rem;
}
.inset-y-32 {
top: 8rem;
bottom: 8rem;
}
.inset-y-36 {
top: 9rem;
bottom: 9rem;
}
.inset-y-40 {
top: 10rem;
bottom: 10rem;
}
.inset-y-44 {
top: 11rem;
bottom: 11rem;
}
.inset-y-48 {
top: 12rem;
bottom: 12rem;
}
.inset-y-52 {
top: 13rem;
bottom: 13rem;
}
.inset-y-56 {
top: 14rem;
bottom: 14rem;
}
.inset-y-60 {
top: 15rem;
bottom: 15rem;
}
.inset-y-64 {
top: 16rem;
bottom: 16rem;
}
.inset-y-72 {
top: 18rem;
bottom: 18rem;
}
.inset-y-80 {
top: 20rem;
bottom: 20rem;
}
.inset-y-96 {
top: 24rem;
bottom: 24rem;
}
.inset-y-auto {
top: auto;
bottom: auto;
}
.inset-y-px {
top: 1px;
bottom: 1px;
}
.inset-y-0\.5 {
top: 0.125rem;
bottom: 0.125rem;
}
.inset-y-1\.5 {
top: 0.375rem;
bottom: 0.375rem;
}
.inset-y-2\.5 {
top: 0.625rem;
bottom: 0.625rem;
}
.inset-y-3\.5 {
top: 0.875rem;
bottom: 0.875rem;
}
.-inset-y-0 {
top: 0px;
bottom: 0px;
}
.-inset-y-1 {
top: -0.25rem;
bottom: -0.25rem;
}
.-inset-y-2 {
top: -0.5rem;
bottom: -0.5rem;
}
.-inset-y-3 {
top: -0.75rem;
bottom: -0.75rem;
}
.-inset-y-4 {
top: -1rem;
bottom: -1rem;
}
.-inset-y-5 {
top: -1.25rem;
bottom: -1.25rem;
}
.-inset-y-6 {
top: -1.5rem;
bottom: -1.5rem;
}
.-inset-y-7 {
top: -1.75rem;
bottom: -1.75rem;
}
.-inset-y-8 {
top: -2rem;
bottom: -2rem;
}
.-inset-y-9 {
top: -2.25rem;
bottom: -2.25rem;
}
.-inset-y-10 {
top: -2.5rem;
bottom: -2.5rem;
}
.-inset-y-11 {
top: -2.75rem;
bottom: -2.75rem;
}
.-inset-y-12 {
top: -3rem;
bottom: -3rem;
}
.-inset-y-14 {
top: -3.5rem;
bottom: -3.5rem;
}
.-inset-y-16 {
top: -4rem;
bottom: -4rem;
}
.-inset-y-20 {
top: -5rem;
bottom: -5rem;
}
.-inset-y-24 {
top: -6rem;
bottom: -6rem;
}
.-inset-y-28 {
top: -7rem;
bottom: -7rem;
}
.-inset-y-32 {
top: -8rem;
bottom: -8rem;
}
.-inset-y-36 {
top: -9rem;
bottom: -9rem;
}
.-inset-y-40 {
top: -10rem;
bottom: -10rem;
}
.-inset-y-44 {
top: -11rem;
bottom: -11rem;
}
.-inset-y-48 {
top: -12rem;
bottom: -12rem;
}
.-inset-y-52 {
top: -13rem;
bottom: -13rem;
}
.-inset-y-56 {
top: -14rem;
bottom: -14rem;
}
.-inset-y-60 {
top: -15rem;
bottom: -15rem;
}
.-inset-y-64 {
top: -16rem;
bottom: -16rem;
}
.-inset-y-72 {
top: -18rem;
bottom: -18rem;
}
.-inset-y-80 {
top: -20rem;
bottom: -20rem;
}
.-inset-y-96 {
top: -24rem;
bottom: -24rem;
}
.-inset-y-px {
top: -1px;
bottom: -1px;
}
.-inset-y-0\.5 {
top: -0.125rem;
bottom: -0.125rem;
}
.-inset-y-1\.5 {
top: -0.375rem;
bottom: -0.375rem;
}
.-inset-y-2\.5 {
top: -0.625rem;
bottom: -0.625rem;
}
.-inset-y-3\.5 {
top: -0.875rem;
bottom: -0.875rem;
}
.inset-y-1\/2 {
top: 50%;
bottom: 50%;
}
.inset-y-1\/3 {
top: 33.333333%;
bottom: 33.333333%;
}
.inset-y-2\/3 {
top: 66.666667%;
bottom: 66.666667%;
}
.inset-y-1\/4 {
top: 25%;
bottom: 25%;
}
.inset-y-2\/4 {
top: 50%;
bottom: 50%;
}
.inset-y-3\/4 {
top: 75%;
bottom: 75%;
}
.inset-y-full {
top: 100%;
bottom: 100%;
}
.-inset-y-1\/2 {
top: -50%;
bottom: -50%;
}
.-inset-y-1\/3 {
top: -33.333333%;
bottom: -33.333333%;
}
.-inset-y-2\/3 {
top: -66.666667%;
bottom: -66.666667%;
}
.-inset-y-1\/4 {
top: -25%;
bottom: -25%;
}
.-inset-y-2\/4 {
top: -50%;
bottom: -50%;
}
.-inset-y-3\/4 {
top: -75%;
bottom: -75%;
}
.-inset-y-full {
top: -100%;
bottom: -100%;
}
.top-0 {
top: 0px;
}
.top-1 {
top: 0.25rem;
}
.top-2 {
top: 0.5rem;
}
.top-3 {
top: 0.75rem;
}
.top-4 {
top: 1rem;
}
.top-5 {
top: 1.25rem;
}
.top-6 {
top: 1.5rem;
}
.top-7 {
top: 1.75rem;
}
.top-8 {
top: 2rem;
}
.top-9 {
top: 2.25rem;
}
.top-10 {
top: 2.5rem;
}
.top-11 {
top: 2.75rem;
}
.top-12 {
top: 3rem;
}
.top-14 {
top: 3.5rem;
}
.top-16 {
top: 4rem;
}
.top-20 {
top: 5rem;
}
.top-24 {
top: 6rem;
}
.top-28 {
top: 7rem;
}
.top-32 {
top: 8rem;
}
.top-36 {
top: 9rem;
}
.top-40 {
top: 10rem;
}
.top-44 {
top: 11rem;
}
.top-48 {
top: 12rem;
}
.top-52 {
top: 13rem;
}
.top-56 {
top: 14rem;
}
.top-60 {
top: 15rem;
}
.top-64 {
top: 16rem;
}
.top-72 {
top: 18rem;
}
.top-80 {
top: 20rem;
}
.top-96 {
top: 24rem;
}
.top-auto {
top: auto;
}
.top-px {
top: 1px;
}
.top-0\.5 {
top: 0.125rem;
}
.top-1\.5 {
top: 0.375rem;
}
.top-2\.5 {
top: 0.625rem;
}
.top-3\.5 {
top: 0.875rem;
}
.-top-0 {
top: 0px;
}
.-top-1 {
top: -0.25rem;
}
.-top-2 {
top: -0.5rem;
}
.-top-3 {
top: -0.75rem;
}
.-top-4 {
top: -1rem;
}
.-top-5 {
top: -1.25rem;
}
.-top-6 {
top: -1.5rem;
}
.-top-7 {
top: -1.75rem;
}
.-top-8 {
top: -2rem;
}
.-top-9 {
top: -2.25rem;
}
.-top-10 {
top: -2.5rem;
}
.-top-11 {
top: -2.75rem;
}
.-top-12 {
top: -3rem;
}
.-top-14 {
top: -3.5rem;
}
.-top-16 {
top: -4rem;
}
.-top-20 {
top: -5rem;
}
.-top-24 {
top: -6rem;
}
.-top-28 {
top: -7rem;
}
.-top-32 {
top: -8rem;
}
.-top-36 {
top: -9rem;
}
.-top-40 {
top: -10rem;
}
.-top-44 {
top: -11rem;
}
.-top-48 {
top: -12rem;
}
.-top-52 {
top: -13rem;
}
.-top-56 {
top: -14rem;
}
.-top-60 {
top: -15rem;
}
.-top-64 {
top: -16rem;
}
.-top-72 {
top: -18rem;
}
.-top-80 {
top: -20rem;
}
.-top-96 {
top: -24rem;
}
.-top-px {
top: -1px;
}
.-top-0\.5 {
top: -0.125rem;
}
.-top-1\.5 {
top: -0.375rem;
}
.-top-2\.5 {
top: -0.625rem;
}
.-top-3\.5 {
top: -0.875rem;
}
.top-1\/2 {
top: 50%;
}
.top-1\/3 {
top: 33.333333%;
}
.top-2\/3 {
top: 66.666667%;
}
.top-1\/4 {
top: 25%;
}
.top-2\/4 {
top: 50%;
}
.top-3\/4 {
top: 75%;
}
.top-full {
top: 100%;
}
.-top-1\/2 {
top: -50%;
}
.-top-1\/3 {
top: -33.333333%;
}
.-top-2\/3 {
top: -66.666667%;
}
.-top-1\/4 {
top: -25%;
}
.-top-2\/4 {
top: -50%;
}
.-top-3\/4 {
top: -75%;
}
.-top-full {
top: -100%;
}
.right-0 {
right: 0px;
}
.right-1 {
right: 0.25rem;
}
.right-2 {
right: 0.5rem;
}
.right-3 {
right: 0.75rem;
}
.right-4 {
right: 1rem;
}
.right-5 {
right: 1.25rem;
}
.right-6 {
right: 1.5rem;
}
.right-7 {
right: 1.75rem;
}
.right-8 {
right: 2rem;
}
.right-9 {
right: 2.25rem;
}
.right-10 {
right: 2.5rem;
}
.right-11 {
right: 2.75rem;
}
.right-12 {
right: 3rem;
}
.right-14 {
right: 3.5rem;
}
.right-16 {
right: 4rem;
}
.right-20 {
right: 5rem;
}
.right-24 {
right: 6rem;
}
.right-28 {
right: 7rem;
}
.right-32 {
right: 8rem;
}
.right-36 {
right: 9rem;
}
.right-40 {
right: 10rem;
}
.right-44 {
right: 11rem;
}
.right-48 {
right: 12rem;
}
.right-52 {
right: 13rem;
}
.right-56 {
right: 14rem;
}
.right-60 {
right: 15rem;
}
.right-64 {
right: 16rem;
}
.right-72 {
right: 18rem;
}
.right-80 {
right: 20rem;
}
.right-96 {
right: 24rem;
}
.right-auto {
right: auto;
}
.right-px {
right: 1px;
}
.right-0\.5 {
right: 0.125rem;
}
.right-1\.5 {
right: 0.375rem;
}
.right-2\.5 {
right: 0.625rem;
}
.right-3\.5 {
right: 0.875rem;
}
.-right-0 {
right: 0px;
}
.-right-1 {
right: -0.25rem;
}
.-right-2 {
right: -0.5rem;
}
.-right-3 {
right: -0.75rem;
}
.-right-4 {
right: -1rem;
}
.-right-5 {
right: -1.25rem;
}
.-right-6 {
right: -1.5rem;
}
.-right-7 {
right: -1.75rem;
}
.-right-8 {
right: -2rem;
}
.-right-9 {
right: -2.25rem;
}
.-right-10 {
right: -2.5rem;
}
.-right-11 {
right: -2.75rem;
}
.-right-12 {
right: -3rem;
}
.-right-14 {
right: -3.5rem;
}
.-right-16 {
right: -4rem;
}
.-right-20 {
right: -5rem;
}
.-right-24 {
right: -6rem;
}
.-right-28 {
right: -7rem;
}
.-right-32 {
right: -8rem;
}
.-right-36 {
right: -9rem;
}
.-right-40 {
right: -10rem;
}
.-right-44 {
right: -11rem;
}
.-right-48 {
right: -12rem;
}
.-right-52 {
right: -13rem;
}
.-right-56 {
right: -14rem;
}
.-right-60 {
right: -15rem;
}
.-right-64 {
right: -16rem;
}
.-right-72 {
right: -18rem;
}
.-right-80 {
right: -20rem;
}
.-right-96 {
right: -24rem;
}
.-right-px {
right: -1px;
}
.-right-0\.5 {
right: -0.125rem;
}
.-right-1\.5 {
right: -0.375rem;
}
.-right-2\.5 {
right: -0.625rem;
}
.-right-3\.5 {
right: -0.875rem;
}
.right-1\/2 {
right: 50%;
}
.right-1\/3 {
right: 33.333333%;
}
.right-2\/3 {
right: 66.666667%;
}
.right-1\/4 {
right: 25%;
}
.right-2\/4 {
right: 50%;
}
.right-3\/4 {
right: 75%;
}
.right-full {
right: 100%;
}
.-right-1\/2 {
right: -50%;
}
.-right-1\/3 {
right: -33.333333%;
}
.-right-2\/3 {
right: -66.666667%;
}
.-right-1\/4 {
right: -25%;
}
.-right-2\/4 {
right: -50%;
}
.-right-3\/4 {
right: -75%;
}
.-right-full {
right: -100%;
}
.bottom-0 {
bottom: 0px;
}
.bottom-1 {
bottom: 0.25rem;
}
.bottom-2 {
bottom: 0.5rem;
}
.bottom-3 {
bottom: 0.75rem;
}
.bottom-4 {
bottom: 1rem;
}
.bottom-5 {
bottom: 1.25rem;
}
.bottom-6 {
bottom: 1.5rem;
}
.bottom-7 {
bottom: 1.75rem;
}
.bottom-8 {
bottom: 2rem;
}
.bottom-9 {
bottom: 2.25rem;
}
.bottom-10 {
bottom: 2.5rem;
}
.bottom-11 {
bottom: 2.75rem;
}
.bottom-12 {
bottom: 3rem;
}
.bottom-14 {
bottom: 3.5rem;
}
.bottom-16 {
bottom: 4rem;
}
.bottom-20 {
bottom: 5rem;
}
.bottom-24 {
bottom: 6rem;
}
.bottom-28 {
bottom: 7rem;
}
.bottom-32 {
bottom: 8rem;
}
.bottom-36 {
bottom: 9rem;
}
.bottom-40 {
bottom: 10rem;
}
.bottom-44 {
bottom: 11rem;
}
.bottom-48 {
bottom: 12rem;
}
.bottom-52 {
bottom: 13rem;
}
.bottom-56 {
bottom: 14rem;
}
.bottom-60 {
bottom: 15rem;
}
.bottom-64 {
bottom: 16rem;
}
.bottom-72 {
bottom: 18rem;
}
.bottom-80 {
bottom: 20rem;
}
.bottom-96 {
bottom: 24rem;
}
.bottom-auto {
bottom: auto;
}
.bottom-px {
bottom: 1px;
}
.bottom-0\.5 {
bottom: 0.125rem;
}
.bottom-1\.5 {
bottom: 0.375rem;
}
.bottom-2\.5 {
bottom: 0.625rem;
}
.bottom-3\.5 {
bottom: 0.875rem;
}
.-bottom-0 {
bottom: 0px;
}
.-bottom-1 {
bottom: -0.25rem;
}
.-bottom-2 {
bottom: -0.5rem;
}
.-bottom-3 {
bottom: -0.75rem;
}
.-bottom-4 {
bottom: -1rem;
}
.-bottom-5 {
bottom: -1.25rem;
}
.-bottom-6 {
bottom: -1.5rem;
}
.-bottom-7 {
bottom: -1.75rem;
}
.-bottom-8 {
bottom: -2rem;
}
.-bottom-9 {
bottom: -2.25rem;
}
.-bottom-10 {
bottom: -2.5rem;
}
.-bottom-11 {
bottom: -2.75rem;
}
.-bottom-12 {
bottom: -3rem;
}
.-bottom-14 {
bottom: -3.5rem;
}
.-bottom-16 {
bottom: -4rem;
}
.-bottom-20 {
bottom: -5rem;
}
.-bottom-24 {
bottom: -6rem;
}
.-bottom-28 {
bottom: -7rem;
}
.-bottom-32 {
bottom: -8rem;
}
.-bottom-36 {
bottom: -9rem;
}
.-bottom-40 {
bottom: -10rem;
}
.-bottom-44 {
bottom: -11rem;
}
.-bottom-48 {
bottom: -12rem;
}
.-bottom-52 {
bottom: -13rem;
}
.-bottom-56 {
bottom: -14rem;
}
.-bottom-60 {
bottom: -15rem;
}
.-bottom-64 {
bottom: -16rem;
}
.-bottom-72 {
bottom: -18rem;
}
.-bottom-80 {
bottom: -20rem;
}
.-bottom-96 {
bottom: -24rem;
}
.-bottom-px {
bottom: -1px;
}
.-bottom-0\.5 {
bottom: -0.125rem;
}
.-bottom-1\.5 {
bottom: -0.375rem;
}
.-bottom-2\.5 {
bottom: -0.625rem;
}
.-bottom-3\.5 {
bottom: -0.875rem;
}
.bottom-1\/2 {
bottom: 50%;
}
.bottom-1\/3 {
bottom: 33.333333%;
}
.bottom-2\/3 {
bottom: 66.666667%;
}
.bottom-1\/4 {
bottom: 25%;
}
.bottom-2\/4 {
bottom: 50%;
}
.bottom-3\/4 {
bottom: 75%;
}
.bottom-full {
bottom: 100%;
}
.-bottom-1\/2 {
bottom: -50%;
}
.-bottom-1\/3 {
bottom: -33.333333%;
}
.-bottom-2\/3 {
bottom: -66.666667%;
}
.-bottom-1\/4 {
bottom: -25%;
}
.-bottom-2\/4 {
bottom: -50%;
}
.-bottom-3\/4 {
bottom: -75%;
}
.-bottom-full {
bottom: -100%;
}
.left-0 {
left: 0px;
}
.left-1 {
left: 0.25rem;
}
.left-2 {
left: 0.5rem;
}
.left-3 {
left: 0.75rem;
}
.left-4 {
left: 1rem;
}
.left-5 {
left: 1.25rem;
}
.left-6 {
left: 1.5rem;
}
.left-7 {
left: 1.75rem;
}
.left-8 {
left: 2rem;
}
.left-9 {
left: 2.25rem;
}
.left-10 {
left: 2.5rem;
}
.left-11 {
left: 2.75rem;
}
.left-12 {
left: 3rem;
}
.left-14 {
left: 3.5rem;
}
.left-16 {
left: 4rem;
}
.left-20 {
left: 5rem;
}
.left-24 {
left: 6rem;
}
.left-28 {
left: 7rem;
}
.left-32 {
left: 8rem;
}
.left-36 {
left: 9rem;
}
.left-40 {
left: 10rem;
}
.left-44 {
left: 11rem;
}
.left-48 {
left: 12rem;
}
.left-52 {
left: 13rem;
}
.left-56 {
left: 14rem;
}
.left-60 {
left: 15rem;
}
.left-64 {
left: 16rem;
}
.left-72 {
left: 18rem;
}
.left-80 {
left: 20rem;
}
.left-96 {
left: 24rem;
}
.left-auto {
left: auto;
}
.left-px {
left: 1px;
}
.left-0\.5 {
left: 0.125rem;
}
.left-1\.5 {
left: 0.375rem;
}
.left-2\.5 {
left: 0.625rem;
}
.left-3\.5 {
left: 0.875rem;
}
.-left-0 {
left: 0px;
}
.-left-1 {
left: -0.25rem;
}
.-left-2 {
left: -0.5rem;
}
.-left-3 {
left: -0.75rem;
}
.-left-4 {
left: -1rem;
}
.-left-5 {
left: -1.25rem;
}
.-left-6 {
left: -1.5rem;
}
.-left-7 {
left: -1.75rem;
}
.-left-8 {
left: -2rem;
}
.-left-9 {
left: -2.25rem;
}
.-left-10 {
left: -2.5rem;
}
.-left-11 {
left: -2.75rem;
}
.-left-12 {
left: -3rem;
}
.-left-14 {
left: -3.5rem;
}
.-left-16 {
left: -4rem;
}
.-left-20 {
left: -5rem;
}
.-left-24 {
left: -6rem;
}
.-left-28 {
left: -7rem;
}
.-left-32 {
left: -8rem;
}
.-left-36 {
left: -9rem;
}
.-left-40 {
left: -10rem;
}
.-left-44 {
left: -11rem;
}
.-left-48 {
left: -12rem;
}
.-left-52 {
left: -13rem;
}
.-left-56 {
left: -14rem;
}
.-left-60 {
left: -15rem;
}
.-left-64 {
left: -16rem;
}
.-left-72 {
left: -18rem;
}
.-left-80 {
left: -20rem;
}
.-left-96 {
left: -24rem;
}
.-left-px {
left: -1px;
}
.-left-0\.5 {
left: -0.125rem;
}
.-left-1\.5 {
left: -0.375rem;
}
.-left-2\.5 {
left: -0.625rem;
}
.-left-3\.5 {
left: -0.875rem;
}
.left-1\/2 {
left: 50%;
}
.left-1\/3 {
left: 33.333333%;
}
.left-2\/3 {
left: 66.666667%;
}
.left-1\/4 {
left: 25%;
}
.left-2\/4 {
left: 50%;
}
.left-3\/4 {
left: 75%;
}
.left-full {
left: 100%;
}
.-left-1\/2 {
left: -50%;
}
.-left-1\/3 {
left: -33.333333%;
}
.-left-2\/3 {
left: -66.666667%;
}
.-left-1\/4 {
left: -25%;
}
.-left-2\/4 {
left: -50%;
}
.-left-3\/4 {
left: -75%;
}
.-left-full {
left: -100%;
}
.isolate {
isolation: isolate;
}
.isolation-auto {
isolation: auto;
}
.z-0 {
z-index: 0;
}
.z-10 {
z-index: 10;
}
.z-20 {
z-index: 20;
}
.z-30 {
z-index: 30;
}
.z-40 {
z-index: 40;
}
.z-50 {
z-index: 50;
}
.z-auto {
z-index: auto;
}
.focus-within\:z-0:focus-within {
z-index: 0;
}
.focus-within\:z-10:focus-within {
z-index: 10;
}
.focus-within\:z-20:focus-within {
z-index: 20;
}
.focus-within\:z-30:focus-within {
z-index: 30;
}
.focus-within\:z-40:focus-within {
z-index: 40;
}
.focus-within\:z-50:focus-within {
z-index: 50;
}
.focus-within\:z-auto:focus-within {
z-index: auto;
}
.focus\:z-0:focus {
z-index: 0;
}
.focus\:z-10:focus {
z-index: 10;
}
.focus\:z-20:focus {
z-index: 20;
}
.focus\:z-30:focus {
z-index: 30;
}
.focus\:z-40:focus {
z-index: 40;
}
.focus\:z-50:focus {
z-index: 50;
}
.focus\:z-auto:focus {
z-index: auto;
}
.order-1 {
order: 1;
}
.order-2 {
order: 2;
}
.order-3 {
order: 3;
}
.order-4 {
order: 4;
}
.order-5 {
order: 5;
}
.order-6 {
order: 6;
}
.order-7 {
order: 7;
}
.order-8 {
order: 8;
}
.order-9 {
order: 9;
}
.order-10 {
order: 10;
}
.order-11 {
order: 11;
}
.order-12 {
order: 12;
}
.order-first {
order: -9999;
}
.order-last {
order: 9999;
}
.order-none {
order: 0;
}
.col-auto {
grid-column: auto;
}
.col-span-1 {
grid-column: span 1 / span 1;
}
.col-span-2 {
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.col-span-4 {
grid-column: span 4 / span 4;
}
.col-span-5 {
grid-column: span 5 / span 5;
}
.col-span-6 {
grid-column: span 6 / span 6;
}
.col-span-7 {
grid-column: span 7 / span 7;
}
.col-span-8 {
grid-column: span 8 / span 8;
}
.col-span-9 {
grid-column: span 9 / span 9;
}
.col-span-10 {
grid-column: span 10 / span 10;
}
.col-span-11 {
grid-column: span 11 / span 11;
}
.col-span-12 {
grid-column: span 12 / span 12;
}
.col-span-full {
grid-column: 1 / -1;
}
.col-start-1 {
grid-column-start: 1;
}
.col-start-2 {
grid-column-start: 2;
}
.col-start-3 {
grid-column-start: 3;
}
.col-start-4 {
grid-column-start: 4;
}
.col-start-5 {
grid-column-start: 5;
}
.col-start-6 {
grid-column-start: 6;
}
.col-start-7 {
grid-column-start: 7;
}
.col-start-8 {
grid-column-start: 8;
}
.col-start-9 {
grid-column-start: 9;
}
.col-start-10 {
grid-column-start: 10;
}
.col-start-11 {
grid-column-start: 11;
}
.col-start-12 {
grid-column-start: 12;
}
.col-start-13 {
grid-column-start: 13;
}
.col-start-auto {
grid-column-start: auto;
}
.col-end-1 {
grid-column-end: 1;
}
.col-end-2 {
grid-column-end: 2;
}
.col-end-3 {
grid-column-end: 3;
}
.col-end-4 {
grid-column-end: 4;
}
.col-end-5 {
grid-column-end: 5;
}
.col-end-6 {
grid-column-end: 6;
}
.col-end-7 {
grid-column-end: 7;
}
.col-end-8 {
grid-column-end: 8;
}
.col-end-9 {
grid-column-end: 9;
}
.col-end-10 {
grid-column-end: 10;
}
.col-end-11 {
grid-column-end: 11;
}
.col-end-12 {
grid-column-end: 12;
}
.col-end-13 {
grid-column-end: 13;
}
.col-end-auto {
grid-column-end: auto;
}
.row-auto {
grid-row: auto;
}
.row-span-1 {
grid-row: span 1 / span 1;
}
.row-span-2 {
grid-row: span 2 / span 2;
}
.row-span-3 {
grid-row: span 3 / span 3;
}
.row-span-4 {
grid-row: span 4 / span 4;
}
.row-span-5 {
grid-row: span 5 / span 5;
}
.row-span-6 {
grid-row: span 6 / span 6;
}
.row-span-full {
grid-row: 1 / -1;
}
.row-start-1 {
grid-row-start: 1;
}
.row-start-2 {
grid-row-start: 2;
}
.row-start-3 {
grid-row-start: 3;
}
.row-start-4 {
grid-row-start: 4;
}
.row-start-5 {
grid-row-start: 5;
}
.row-start-6 {
grid-row-start: 6;
}
.row-start-7 {
grid-row-start: 7;
}
.row-start-auto {
grid-row-start: auto;
}
.row-end-1 {
grid-row-end: 1;
}
.row-end-2 {
grid-row-end: 2;
}
.row-end-3 {
grid-row-end: 3;
}
.row-end-4 {
grid-row-end: 4;
}
.row-end-5 {
grid-row-end: 5;
}
.row-end-6 {
grid-row-end: 6;
}
.row-end-7 {
grid-row-end: 7;
}
.row-end-auto {
grid-row-end: auto;
}
.float-right {
float: right;
}
.float-left {
float: left;
}
.float-none {
float: none;
}
.clear-left {
clear: left;
}
.clear-right {
clear: right;
}
.clear-both {
clear: both;
}
.clear-none {
clear: none;
}
.m-0 {
margin: 0px;
}
.m-1 {
margin: 0.25rem;
}
.m-2 {
margin: 0.5rem;
}
.m-3 {
margin: 0.75rem;
}
.m-4 {
margin: 1rem;
}
.m-5 {
margin: 1.25rem;
}
.m-6 {
margin: 1.5rem;
}
.m-7 {
margin: 1.75rem;
}
.m-8 {
margin: 2rem;
}
.m-9 {
margin: 2.25rem;
}
.m-10 {
margin: 2.5rem;
}
.m-11 {
margin: 2.75rem;
}
.m-12 {
margin: 3rem;
}
.m-14 {
margin: 3.5rem;
}
.m-16 {
margin: 4rem;
}
.m-20 {
margin: 5rem;
}
.m-24 {
margin: 6rem;
}
.m-28 {
margin: 7rem;
}
.m-32 {
margin: 8rem;
}
.m-36 {
margin: 9rem;
}
.m-40 {
margin: 10rem;
}
.m-44 {
margin: 11rem;
}
.m-48 {
margin: 12rem;
}
.m-52 {
margin: 13rem;
}
.m-56 {
margin: 14rem;
}
.m-60 {
margin: 15rem;
}
.m-64 {
margin: 16rem;
}
.m-72 {
margin: 18rem;
}
.m-80 {
margin: 20rem;
}
.m-96 {
margin: 24rem;
}
.m-auto {
margin: auto;
}
.m-px {
margin: 1px;
}
.m-0\.5 {
margin: 0.125rem;
}
.m-1\.5 {
margin: 0.375rem;
}
.m-2\.5 {
margin: 0.625rem;
}
.m-3\.5 {
margin: 0.875rem;
}
.-m-0 {
margin: 0px;
}
.-m-1 {
margin: -0.25rem;
}
.-m-2 {
margin: -0.5rem;
}
.-m-3 {
margin: -0.75rem;
}
.-m-4 {
margin: -1rem;
}
.-m-5 {
margin: -1.25rem;
}
.-m-6 {
margin: -1.5rem;
}
.-m-7 {
margin: -1.75rem;
}
.-m-8 {
margin: -2rem;
}
.-m-9 {
margin: -2.25rem;
}
.-m-10 {
margin: -2.5rem;
}
.-m-11 {
margin: -2.75rem;
}
.-m-12 {
margin: -3rem;
}
.-m-14 {
margin: -3.5rem;
}
.-m-16 {
margin: -4rem;
}
.-m-20 {
margin: -5rem;
}
.-m-24 {
margin: -6rem;
}
.-m-28 {
margin: -7rem;
}
.-m-32 {
margin: -8rem;
}
.-m-36 {
margin: -9rem;
}
.-m-40 {
margin: -10rem;
}
.-m-44 {
margin: -11rem;
}
.-m-48 {
margin: -12rem;
}
.-m-52 {
margin: -13rem;
}
.-m-56 {
margin: -14rem;
}
.-m-60 {
margin: -15rem;
}
.-m-64 {
margin: -16rem;
}
.-m-72 {
margin: -18rem;
}
.-m-80 {
margin: -20rem;
}
.-m-96 {
margin: -24rem;
}
.-m-px {
margin: -1px;
}
.-m-0\.5 {
margin: -0.125rem;
}
.-m-1\.5 {
margin: -0.375rem;
}
.-m-2\.5 {
margin: -0.625rem;
}
.-m-3\.5 {
margin: -0.875rem;
}
.mx-0 {
margin-left: 0px;
margin-right: 0px;
}
.mx-1 {
margin-left: 0.25rem;
margin-right: 0.25rem;
}
.mx-2 {
margin-left: 0.5rem;
margin-right: 0.5rem;
}
.mx-3 {
margin-left: 0.75rem;
margin-right: 0.75rem;
}
.mx-4 {
margin-left: 1rem;
margin-right: 1rem;
}
.mx-5 {
margin-left: 1.25rem;
margin-right: 1.25rem;
}
.mx-6 {
margin-left: 1.5rem;
margin-right: 1.5rem;
}
.mx-7 {
margin-left: 1.75rem;
margin-right: 1.75rem;
}
.mx-8 {
margin-left: 2rem;
margin-right: 2rem;
}
.mx-9 {
margin-left: 2.25rem;
margin-right: 2.25rem;
}
.mx-10 {
margin-left: 2.5rem;
margin-right: 2.5rem;
}
.mx-11 {
margin-left: 2.75rem;
margin-right: 2.75rem;
}
.mx-12 {
margin-left: 3rem;
margin-right: 3rem;
}
.mx-14 {
margin-left: 3.5rem;
margin-right: 3.5rem;
}
.mx-16 {
margin-left: 4rem;
margin-right: 4rem;
}
.mx-20 {
margin-left: 5rem;
margin-right: 5rem;
}
.mx-24 {
margin-left: 6rem;
margin-right: 6rem;
}
.mx-28 {
margin-left: 7rem;
margin-right: 7rem;
}
.mx-32 {
margin-left: 8rem;
margin-right: 8rem;
}
.mx-36 {
margin-left: 9rem;
margin-right: 9rem;
}
.mx-40 {
margin-left: 10rem;
margin-right: 10rem;
}
.mx-44 {
margin-left: 11rem;
margin-right: 11rem;
}
.mx-48 {
margin-left: 12rem;
margin-right: 12rem;
}
.mx-52 {
margin-left: 13rem;
margin-right: 13rem;
}
.mx-56 {
margin-left: 14rem;
margin-right: 14rem;
}
.mx-60 {
margin-left: 15rem;
margin-right: 15rem;
}
.mx-64 {
margin-left: 16rem;
margin-right: 16rem;
}
.mx-72 {
margin-left: 18rem;
margin-right: 18rem;
}
.mx-80 {
margin-left: 20rem;
margin-right: 20rem;
}
.mx-96 {
margin-left: 24rem;
margin-right: 24rem;
}
.mx-auto {
margin-left: auto;
margin-right: auto;
}
.mx-px {
margin-left: 1px;
margin-right: 1px;
}
.mx-0\.5 {
margin-left: 0.125rem;
margin-right: 0.125rem;
}
.mx-1\.5 {
margin-left: 0.375rem;
margin-right: 0.375rem;
}
.mx-2\.5 {
margin-left: 0.625rem;
margin-right: 0.625rem;
}
.mx-3\.5 {
margin-left: 0.875rem;
margin-right: 0.875rem;
}
.-mx-0 {
margin-left: 0px;
margin-right: 0px;
}
.-mx-1 {
margin-left: -0.25rem;
margin-right: -0.25rem;
}
.-mx-2 {
margin-left: -0.5rem;
margin-right: -0.5rem;
}
.-mx-3 {
margin-left: -0.75rem;
margin-right: -0.75rem;
}
.-mx-4 {
margin-left: -1rem;
margin-right: -1rem;
}
.-mx-5 {
margin-left: -1.25rem;
margin-right: -1.25rem;
}
.-mx-6 {
margin-left: -1.5rem;
margin-right: -1.5rem;
}
.-mx-7 {
margin-left: -1.75rem;
margin-right: -1.75rem;
}
.-mx-8 {
margin-left: -2rem;
margin-right: -2rem;
}
.-mx-9 {
margin-left: -2.25rem;
margin-right: -2.25rem;
}
.-mx-10 {
margin-left: -2.5rem;
margin-right: -2.5rem;
}
.-mx-11 {
margin-left: -2.75rem;
margin-right: -2.75rem;
}
.-mx-12 {
margin-left: -3rem;
margin-right: -3rem;
}
.-mx-14 {
margin-left: -3.5rem;
margin-right: -3.5rem;
}
.-mx-16 {
margin-left: -4rem;
margin-right: -4rem;
}
.-mx-20 {
margin-left: -5rem;
margin-right: -5rem;
}
.-mx-24 {
margin-left: -6rem;
margin-right: -6rem;
}
.-mx-28 {
margin-left: -7rem;
margin-right: -7rem;
}
.-mx-32 {
margin-left: -8rem;
margin-right: -8rem;
}
.-mx-36 {
margin-left: -9rem;
margin-right: -9rem;
}
.-mx-40 {
margin-left: -10rem;
margin-right: -10rem;
}
.-mx-44 {
margin-left: -11rem;
margin-right: -11rem;
}
.-mx-48 {
margin-left: -12rem;
margin-right: -12rem;
}
.-mx-52 {
margin-left: -13rem;
margin-right: -13rem;
}
.-mx-56 {
margin-left: -14rem;
margin-right: -14rem;
}
.-mx-60 {
margin-left: -15rem;
margin-right: -15rem;
}
.-mx-64 {
margin-left: -16rem;
margin-right: -16rem;
}
.-mx-72 {
margin-left: -18rem;
margin-right: -18rem;
}
.-mx-80 {
margin-left: -20rem;
margin-right: -20rem;
}
.-mx-96 {
margin-left: -24rem;
margin-right: -24rem;
}
.-mx-px {
margin-left: -1px;
margin-right: -1px;
}
.-mx-0\.5 {
margin-left: -0.125rem;
margin-right: -0.125rem;
}
.-mx-1\.5 {
margin-left: -0.375rem;
margin-right: -0.375rem;
}
.-mx-2\.5 {
margin-left: -0.625rem;
margin-right: -0.625rem;
}
.-mx-3\.5 {
margin-left: -0.875rem;
margin-right: -0.875rem;
}
.my-0 {
margin-top: 0px;
margin-bottom: 0px;
}
.my-1 {
margin-top: 0.25rem;
margin-bottom: 0.25rem;
}
.my-2 {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.my-3 {
margin-top: 0.75rem;
margin-bottom: 0.75rem;
}
.my-4 {
margin-top: 1rem;
margin-bottom: 1rem;
}
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-6 {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
.my-7 {
margin-top: 1.75rem;
margin-bottom: 1.75rem;
}
.my-8 {
margin-top: 2rem;
margin-bottom: 2rem;
}
.my-9 {
margin-top: 2.25rem;
margin-bottom: 2.25rem;
}
.my-10 {
margin-top: 2.5rem;
margin-bottom: 2.5rem;
}
.my-11 {
margin-top: 2.75rem;
margin-bottom: 2.75rem;
}
.my-12 {
margin-top: 3rem;
margin-bottom: 3rem;
}
.my-14 {
margin-top: 3.5rem;
margin-bottom: 3.5rem;
}
.my-16 {
margin-top: 4rem;
margin-bottom: 4rem;
}
.my-20 {
margin-top: 5rem;
margin-bottom: 5rem;
}
.my-24 {
margin-top: 6rem;
margin-bottom: 6rem;
}
.my-28 {
margin-top: 7rem;
margin-bottom: 7rem;
}
.my-32 {
margin-top: 8rem;
margin-bottom: 8rem;
}
.my-36 {
margin-top: 9rem;
margin-bottom: 9rem;
}
.my-40 {
margin-top: 10rem;
margin-bottom: 10rem;
}
.my-44 {
margin-top: 11rem;
margin-bottom: 11rem;
}
.my-48 {
margin-top: 12rem;
margin-bottom: 12rem;
}
.my-52 {
margin-top: 13rem;
margin-bottom: 13rem;
}
.my-56 {
margin-top: 14rem;
margin-bottom: 14rem;
}
.my-60 {
margin-top: 15rem;
margin-bottom: 15rem;
}
.my-64 {
margin-top: 16rem;
margin-bottom: 16rem;
}
.my-72 {
margin-top: 18rem;
margin-bottom: 18rem;
}
.my-80 {
margin-top: 20rem;
margin-bottom: 20rem;
}
.my-96 {
margin-top: 24rem;
margin-bottom: 24rem;
}
.my-auto {
margin-top: auto;
margin-bottom: auto;
}
.my-px {
margin-top: 1px;
margin-bottom: 1px;
}
.my-0\.5 {
margin-top: 0.125rem;
margin-bottom: 0.125rem;
}
.my-1\.5 {
margin-top: 0.375rem;
margin-bottom: 0.375rem;
}
.my-2\.5 {
margin-top: 0.625rem;
margin-bottom: 0.625rem;
}
.my-3\.5 {
margin-top: 0.875rem;
margin-bottom: 0.875rem;
}
.-my-0 {
margin-top: 0px;
margin-bottom: 0px;
}
.-my-1 {
margin-top: -0.25rem;
margin-bottom: -0.25rem;
}
.-my-2 {
margin-top: -0.5rem;
margin-bottom: -0.5rem;
}
.-my-3 {
margin-top: -0.75rem;
margin-bottom: -0.75rem;
}
.-my-4 {
margin-top: -1rem;
margin-bottom: -1rem;
}
.-my-5 {
margin-top: -1.25rem;
margin-bottom: -1.25rem;
}
.-my-6 {
margin-top: -1.5rem;
margin-bottom: -1.5rem;
}
.-my-7 {
margin-top: -1.75rem;
margin-bottom: -1.75rem;
}
.-my-8 {
margin-top: -2rem;
margin-bottom: -2rem;
}
.-my-9 {
margin-top: -2.25rem;
margin-bottom: -2.25rem;
}
.-my-10 {
margin-top: -2.5rem;
margin-bottom: -2.5rem;
}
.-my-11 {
margin-top: -2.75rem;
margin-bottom: -2.75rem;
}
.-my-12 {
margin-top: -3rem;
margin-bottom: -3rem;
}
.-my-14 {
margin-top: -3.5rem;
margin-bottom: -3.5rem;
}
.-my-16 {
margin-top: -4rem;
margin-bottom: -4rem;
}
.-my-20 {
margin-top: -5rem;
margin-bottom: -5rem;
}
.-my-24 {
margin-top: -6rem;
margin-bottom: -6rem;
}
.-my-28 {
margin-top: -7rem;
margin-bottom: -7rem;
}
.-my-32 {
margin-top: -8rem;
margin-bottom: -8rem;
}
.-my-36 {
margin-top: -9rem;
margin-bottom: -9rem;
}
.-my-40 {
margin-top: -10rem;
margin-bottom: -10rem;
}
.-my-44 {
margin-top: -11rem;
margin-bottom: -11rem;
}
.-my-48 {
margin-top: -12rem;
margin-bottom: -12rem;
}
.-my-52 {
margin-top: -13rem;
margin-bottom: -13rem;
}
.-my-56 {
margin-top: -14rem;
margin-bottom: -14rem;
}
.-my-60 {
margin-top: -15rem;
margin-bottom: -15rem;
}
.-my-64 {
margin-top: -16rem;
margin-bottom: -16rem;
}
.-my-72 {
margin-top: -18rem;
margin-bottom: -18rem;
}
.-my-80 {
margin-top: -20rem;
margin-bottom: -20rem;
}
.-my-96 {
margin-top: -24rem;
margin-bottom: -24rem;
}
.-my-px {
margin-top: -1px;
margin-bottom: -1px;
}
.-my-0\.5 {
margin-top: -0.125rem;
margin-bottom: -0.125rem;
}
.-my-1\.5 {
margin-top: -0.375rem;
margin-bottom: -0.375rem;
}
.-my-2\.5 {
margin-top: -0.625rem;
margin-bottom: -0.625rem;
}
.-my-3\.5 {
margin-top: -0.875rem;
margin-bottom: -0.875rem;
}
.mt-0 {
margin-top: 0px;
}
.mt-1 {
margin-top: 0.25rem;
}
.mt-2 {
margin-top: 0.5rem;
}
.mt-3 {
margin-top: 0.75rem;
}
.mt-4 {
margin-top: 1rem;
}
.mt-5 {
margin-top: 1.25rem;
}
.mt-6 {
margin-top: 1.5rem;
}
.mt-7 {
margin-top: 1.75rem;
}
.mt-8 {
margin-top: 2rem;
}
.mt-9 {
margin-top: 2.25rem;
}
.mt-10 {
margin-top: 2.5rem;
}
.mt-11 {
margin-top: 2.75rem;
}
.mt-12 {
margin-top: 3rem;
}
.mt-14 {
margin-top: 3.5rem;
}
.mt-16 {
margin-top: 4rem;
}
.mt-20 {
margin-top: 5rem;
}
.mt-24 {
margin-top: 6rem;
}
.mt-28 {
margin-top: 7rem;
}
.mt-32 {
margin-top: 8rem;
}
.mt-36 {
margin-top: 9rem;
}
.mt-40 {
margin-top: 10rem;
}
.mt-44 {
margin-top: 11rem;
}
.mt-48 {
margin-top: 12rem;
}
.mt-52 {
margin-top: 13rem;
}
.mt-56 {
margin-top: 14rem;
}
.mt-60 {
margin-top: 15rem;
}
.mt-64 {
margin-top: 16rem;
}
.mt-72 {
margin-top: 18rem;
}
.mt-80 {
margin-top: 20rem;
}
.mt-96 {
margin-top: 24rem;
}
.mt-auto {
margin-top: auto;
}
.mt-px {
margin-top: 1px;
}
.mt-0\.5 {
margin-top: 0.125rem;
}
.mt-1\.5 {
margin-top: 0.375rem;
}
.mt-2\.5 {
margin-top: 0.625rem;
}
.mt-3\.5 {
margin-top: 0.875rem;
}
.-mt-0 {
margin-top: 0px;
}
.-mt-1 {
margin-top: -0.25rem;
}
.-mt-2 {
margin-top: -0.5rem;
}
.-mt-3 {
margin-top: -0.75rem;
}
.-mt-4 {
margin-top: -1rem;
}
.-mt-5 {
margin-top: -1.25rem;
}
.-mt-6 {
margin-top: -1.5rem;
}
.-mt-7 {
margin-top: -1.75rem;
}
.-mt-8 {
margin-top: -2rem;
}
.-mt-9 {
margin-top: -2.25rem;
}
.-mt-10 {
margin-top: -2.5rem;
}
.-mt-11 {
margin-top: -2.75rem;
}
.-mt-12 {
margin-top: -3rem;
}
.-mt-14 {
margin-top: -3.5rem;
}
.-mt-16 {
margin-top: -4rem;
}
.-mt-20 {
margin-top: -5rem;
}
.-mt-24 {
margin-top: -6rem;
}
.-mt-28 {
margin-top: -7rem;
}
.-mt-32 {
margin-top: -8rem;
}
.-mt-36 {
margin-top: -9rem;
}
.-mt-40 {
margin-top: -10rem;
}
.-mt-44 {
margin-top: -11rem;
}
.-mt-48 {
margin-top: -12rem;
}
.-mt-52 {
margin-top: -13rem;
}
.-mt-56 {
margin-top: -14rem;
}
.-mt-60 {
margin-top: -15rem;
}
.-mt-64 {
margin-top: -16rem;
}
.-mt-72 {
margin-top: -18rem;
}
.-mt-80 {
margin-top: -20rem;
}
.-mt-96 {
margin-top: -24rem;
}
.-mt-px {
margin-top: -1px;
}
.-mt-0\.5 {
margin-top: -0.125rem;
}
.-mt-1\.5 {
margin-top: -0.375rem;
}
.-mt-2\.5 {
margin-top: -0.625rem;
}
.-mt-3\.5 {
margin-top: -0.875rem;
}
.mr-0 {
margin-right: 0px;
}
.mr-1 {
margin-right: 0.25rem;
}
.mr-2 {
margin-right: 0.5rem;
}
.mr-3 {
margin-right: 0.75rem;
}
.mr-4 {
margin-right: 1rem;
}
.mr-5 {
margin-right: 1.25rem;
}
.mr-6 {
margin-right: 1.5rem;
}
.mr-7 {
margin-right: 1.75rem;
}
.mr-8 {
margin-right: 2rem;
}
.mr-9 {
margin-right: 2.25rem;
}
.mr-10 {
margin-right: 2.5rem;
}
.mr-11 {
margin-right: 2.75rem;
}
.mr-12 {
margin-right: 3rem;
}
.mr-14 {
margin-right: 3.5rem;
}
.mr-16 {
margin-right: 4rem;
}
.mr-20 {
margin-right: 5rem;
}
.mr-24 {
margin-right: 6rem;
}
.mr-28 {
margin-right: 7rem;
}
.mr-32 {
margin-right: 8rem;
}
.mr-36 {
margin-right: 9rem;
}
.mr-40 {
margin-right: 10rem;
}
.mr-44 {
margin-right: 11rem;
}
.mr-48 {
margin-right: 12rem;
}
.mr-52 {
margin-right: 13rem;
}
.mr-56 {
margin-right: 14rem;
}
.mr-60 {
margin-right: 15rem;
}
.mr-64 {
margin-right: 16rem;
}
.mr-72 {
margin-right: 18rem;
}
.mr-80 {
margin-right: 20rem;
}
.mr-96 {
margin-right: 24rem;
}
.mr-auto {
margin-right: auto;
}
.mr-px {
margin-right: 1px;
}
.mr-0\.5 {
margin-right: 0.125rem;
}
.mr-1\.5 {
margin-right: 0.375rem;
}
.mr-2\.5 {
margin-right: 0.625rem;
}
.mr-3\.5 {
margin-right: 0.875rem;
}
.-mr-0 {
margin-right: 0px;
}
.-mr-1 {
margin-right: -0.25rem;
}
.-mr-2 {
margin-right: -0.5rem;
}
.-mr-3 {
margin-right: -0.75rem;
}
.-mr-4 {
margin-right: -1rem;
}
.-mr-5 {
margin-right: -1.25rem;
}
.-mr-6 {
margin-right: -1.5rem;
}
.-mr-7 {
margin-right: -1.75rem;
}
.-mr-8 {
margin-right: -2rem;
}
.-mr-9 {
margin-right: -2.25rem;
}
.-mr-10 {
margin-right: -2.5rem;
}
.-mr-11 {
margin-right: -2.75rem;
}
.-mr-12 {
margin-right: -3rem;
}
.-mr-14 {
margin-right: -3.5rem;
}
.-mr-16 {
margin-right: -4rem;
}
.-mr-20 {
margin-right: -5rem;
}
.-mr-24 {
margin-right: -6rem;
}
.-mr-28 {
margin-right: -7rem;
}
.-mr-32 {
margin-right: -8rem;
}
.-mr-36 {
margin-right: -9rem;
}
.-mr-40 {
margin-right: -10rem;
}
.-mr-44 {
margin-right: -11rem;
}
.-mr-48 {
margin-right: -12rem;
}
.-mr-52 {
margin-right: -13rem;
}
.-mr-56 {
margin-right: -14rem;
}
.-mr-60 {
margin-right: -15rem;
}
.-mr-64 {
margin-right: -16rem;
}
.-mr-72 {
margin-right: -18rem;
}
.-mr-80 {
margin-right: -20rem;
}
.-mr-96 {
margin-right: -24rem;
}
.-mr-px {
margin-right: -1px;
}
.-mr-0\.5 {
margin-right: -0.125rem;
}
.-mr-1\.5 {
margin-right: -0.375rem;
}
.-mr-2\.5 {
margin-right: -0.625rem;
}
.-mr-3\.5 {
margin-right: -0.875rem;
}
.mb-0 {
margin-bottom: 0px;
}
.mb-1 {
margin-bottom: 0.25rem;
}
.mb-2 {
margin-bottom: 0.5rem;
}
.mb-3 {
margin-bottom: 0.75rem;
}
.mb-4 {
margin-bottom: 1rem;
}
.mb-5 {
margin-bottom: 1.25rem;
}
.mb-6 {
margin-bottom: 1.5rem;
}
.mb-7 {
margin-bottom: 1.75rem;
}
.mb-8 {
margin-bottom: 2rem;
}
.mb-9 {
margin-bottom: 2.25rem;
}
.mb-10 {
margin-bottom: 2.5rem;
}
.mb-11 {
margin-bottom: 2.75rem;
}
.mb-12 {
margin-bottom: 3rem;
}
.mb-14 {
margin-bottom: 3.5rem;
}
.mb-16 {
margin-bottom: 4rem;
}
.mb-20 {
margin-bottom: 5rem;
}
.mb-24 {
margin-bottom: 6rem;
}
.mb-28 {
margin-bottom: 7rem;
}
.mb-32 {
margin-bottom: 8rem;
}
.mb-36 {
margin-bottom: 9rem;
}
.mb-40 {
margin-bottom: 10rem;
}
.mb-44 {
margin-bottom: 11rem;
}
.mb-48 {
margin-bottom: 12rem;
}
.mb-52 {
margin-bottom: 13rem;
}
.mb-56 {
margin-bottom: 14rem;
}
.mb-60 {
margin-bottom: 15rem;
}
.mb-64 {
margin-bottom: 16rem;
}
.mb-72 {
margin-bottom: 18rem;
}
.mb-80 {
margin-bottom: 20rem;
}
.mb-96 {
margin-bottom: 24rem;
}
.mb-auto {
margin-bottom: auto;
}
.mb-px {
margin-bottom: 1px;
}
.mb-0\.5 {
margin-bottom: 0.125rem;
}
.mb-1\.5 {
margin-bottom: 0.375rem;
}
.mb-2\.5 {
margin-bottom: 0.625rem;
}
.mb-3\.5 {
margin-bottom: 0.875rem;
}
.-mb-0 {
margin-bottom: 0px;
}
.-mb-1 {
margin-bottom: -0.25rem;
}
.-mb-2 {
margin-bottom: -0.5rem;
}
.-mb-3 {
margin-bottom: -0.75rem;
}
.-mb-4 {
margin-bottom: -1rem;
}
.-mb-5 {
margin-bottom: -1.25rem;
}
.-mb-6 {
margin-bottom: -1.5rem;
}
.-mb-7 {
margin-bottom: -1.75rem;
}
.-mb-8 {
margin-bottom: -2rem;
}
.-mb-9 {
margin-bottom: -2.25rem;
}
.-mb-10 {
margin-bottom: -2.5rem;
}
.-mb-11 {
margin-bottom: -2.75rem;
}
.-mb-12 {
margin-bottom: -3rem;
}
.-mb-14 {
margin-bottom: -3.5rem;
}
.-mb-16 {
margin-bottom: -4rem;
}
.-mb-20 {
margin-bottom: -5rem;
}
.-mb-24 {
margin-bottom: -6rem;
}
.-mb-28 {
margin-bottom: -7rem;
}
.-mb-32 {
margin-bottom: -8rem;
}
.-mb-36 {
margin-bottom: -9rem;
}
.-mb-40 {
margin-bottom: -10rem;
}
.-mb-44 {
margin-bottom: -11rem;
}
.-mb-48 {
margin-bottom: -12rem;
}
.-mb-52 {
margin-bottom: -13rem;
}
.-mb-56 {
margin-bottom: -14rem;
}
.-mb-60 {
margin-bottom: -15rem;
}
.-mb-64 {
margin-bottom: -16rem;
}
.-mb-72 {
margin-bottom: -18rem;
}
.-mb-80 {
margin-bottom: -20rem;
}
.-mb-96 {
margin-bottom: -24rem;
}
.-mb-px {
margin-bottom: -1px;
}
.-mb-0\.5 {
margin-bottom: -0.125rem;
}
.-mb-1\.5 {
margin-bottom: -0.375rem;
}
.-mb-2\.5 {
margin-bottom: -0.625rem;
}
.-mb-3\.5 {
margin-bottom: -0.875rem;
}
.ml-0 {
margin-left: 0px;
}
.ml-1 {
margin-left: 0.25rem;
}
.ml-2 {
margin-left: 0.5rem;
}
.ml-3 {
margin-left: 0.75rem;
}
.ml-4 {
margin-left: 1rem;
}
.ml-5 {
margin-left: 1.25rem;
}
.ml-6 {
margin-left: 1.5rem;
}
.ml-7 {
margin-left: 1.75rem;
}
.ml-8 {
margin-left: 2rem;
}
.ml-9 {
margin-left: 2.25rem;
}
.ml-10 {
margin-left: 2.5rem;
}
.ml-11 {
margin-left: 2.75rem;
}
.ml-12 {
margin-left: 3rem;
}
.ml-14 {
margin-left: 3.5rem;
}
.ml-16 {
margin-left: 4rem;
}
.ml-20 {
margin-left: 5rem;
}
.ml-24 {
margin-left: 6rem;
}
.ml-28 {
margin-left: 7rem;
}
.ml-32 {
margin-left: 8rem;
}
.ml-36 {
margin-left: 9rem;
}
.ml-40 {
margin-left: 10rem;
}
.ml-44 {
margin-left: 11rem;
}
.ml-48 {
margin-left: 12rem;
}
.ml-52 {
margin-left: 13rem;
}
.ml-56 {
margin-left: 14rem;
}
.ml-60 {
margin-left: 15rem;
}
.ml-64 {
margin-left: 16rem;
}
.ml-72 {
margin-left: 18rem;
}
.ml-80 {
margin-left: 20rem;
}
.ml-96 {
margin-left: 24rem;
}
.ml-auto {
margin-left: auto;
}
.ml-px {
margin-left: 1px;
}
.ml-0\.5 {
margin-left: 0.125rem;
}
.ml-1\.5 {
margin-left: 0.375rem;
}
.ml-2\.5 {
margin-left: 0.625rem;
}
.ml-3\.5 {
margin-left: 0.875rem;
}
.-ml-0 {
margin-left: 0px;
}
.-ml-1 {
margin-left: -0.25rem;
}
.-ml-2 {
margin-left: -0.5rem;
}
.-ml-3 {
margin-left: -0.75rem;
}
.-ml-4 {
margin-left: -1rem;
}
.-ml-5 {
margin-left: -1.25rem;
}
.-ml-6 {
margin-left: -1.5rem;
}
.-ml-7 {
margin-left: -1.75rem;
}
.-ml-8 {
margin-left: -2rem;
}
.-ml-9 {
margin-left: -2.25rem;
}
.-ml-10 {
margin-left: -2.5rem;
}
.-ml-11 {
margin-left: -2.75rem;
}
.-ml-12 {
margin-left: -3rem;
}
.-ml-14 {
margin-left: -3.5rem;
}
.-ml-16 {
margin-left: -4rem;
}
.-ml-20 {
margin-left: -5rem;
}
.-ml-24 {
margin-left: -6rem;
}
.-ml-28 {
margin-left: -7rem;
}
.-ml-32 {
margin-left: -8rem;
}
.-ml-36 {
margin-left: -9rem;
}
.-ml-40 {
margin-left: -10rem;
}
.-ml-44 {
margin-left: -11rem;
}
.-ml-48 {
margin-left: -12rem;
}
.-ml-52 {
margin-left: -13rem;
}
.-ml-56 {
margin-left: -14rem;
}
.-ml-60 {
margin-left: -15rem;
}
.-ml-64 {
margin-left: -16rem;
}
.-ml-72 {
margin-left: -18rem;
}
.-ml-80 {
margin-left: -20rem;
}
.-ml-96 {
margin-left: -24rem;
}
.-ml-px {
margin-left: -1px;
}
.-ml-0\.5 {
margin-left: -0.125rem;
}
.-ml-1\.5 {
margin-left: -0.375rem;
}
.-ml-2\.5 {
margin-left: -0.625rem;
}
.-ml-3\.5 {
margin-left: -0.875rem;
}
.box-border {
box-sizing: border-box;
}
.box-content {
box-sizing: content-box;
}
.block {
display: block;
}
.inline-block {
display: inline-block;
}
.inline {
display: inline;
}
.flex {
display: flex;
}
.inline-flex {
display: inline-flex;
}
.table {
display: table;
}
.inline-table {
display: inline-table;
}
.table-caption {
display: table-caption;
}
.table-cell {
display: table-cell;
}
.table-column {
display: table-column;
}
.table-column-group {
display: table-column-group;
}
.table-footer-group {
display: table-footer-group;
}
.table-header-group {
display: table-header-group;
}
.table-row-group {
display: table-row-group;
}
.table-row {
display: table-row;
}
.flow-root {
display: flow-root;
}
.grid {
display: grid;
}
.inline-grid {
display: inline-grid;
}
.contents {
display: contents;
}
.list-item {
display: list-item;
}
.hidden {
display: none;
}
.h-0 {
height: 0px;
}
.h-1 {
height: 0.25rem;
}
.h-2 {
height: 0.5rem;
}
.h-3 {
height: 0.75rem;
}
.h-4 {
height: 1rem;
}
.h-5 {
height: 1.25rem;
}
.h-6 {
height: 1.5rem;
}
.h-7 {
height: 1.75rem;
}
.h-8 {
height: 2rem;
}
.h-9 {
height: 2.25rem;
}
.h-10 {
height: 2.5rem;
}
.h-11 {
height: 2.75rem;
}
.h-12 {
height: 3rem;
}
.h-14 {
height: 3.5rem;
}
.h-16 {
height: 4rem;
}
.h-20 {
height: 5rem;
}
.h-24 {
height: 6rem;
}
.h-28 {
height: 7rem;
}
.h-32 {
height: 8rem;
}
.h-36 {
height: 9rem;
}
.h-40 {
height: 10rem;
}
.h-44 {
height: 11rem;
}
.h-48 {
height: 12rem;
}
.h-52 {
height: 13rem;
}
.h-56 {
height: 14rem;
}
.h-60 {
height: 15rem;
}
.h-64 {
height: 16rem;
}
.h-72 {
height: 18rem;
}
.h-80 {
height: 20rem;
}
.h-96 {
height: 24rem;
}
.h-auto {
height: auto;
}
.h-px {
height: 1px;
}
.h-0\.5 {
height: 0.125rem;
}
.h-1\.5 {
height: 0.375rem;
}
.h-2\.5 {
height: 0.625rem;
}
.h-3\.5 {
height: 0.875rem;
}
.h-1\/2 {
height: 50%;
}
.h-1\/3 {
height: 33.333333%;
}
.h-2\/3 {
height: 66.666667%;
}
.h-1\/4 {
height: 25%;
}
.h-2\/4 {
height: 50%;
}
.h-3\/4 {
height: 75%;
}
.h-1\/5 {
height: 20%;
}
.h-2\/5 {
height: 40%;
}
.h-3\/5 {
height: 60%;
}
.h-4\/5 {
height: 80%;
}
.h-1\/6 {
height: 16.666667%;
}
.h-2\/6 {
height: 33.333333%;
}
.h-3\/6 {
height: 50%;
}
.h-4\/6 {
height: 66.666667%;
}
.h-5\/6 {
height: 83.333333%;
}
.h-full {
height: 100%;
}
.h-screen {
height: 100vh;
}
.max-h-0 {
max-height: 0px;
}
.max-h-1 {
max-height: 0.25rem;
}
.max-h-2 {
max-height: 0.5rem;
}
.max-h-3 {
max-height: 0.75rem;
}
.max-h-4 {
max-height: 1rem;
}
.max-h-5 {
max-height: 1.25rem;
}
.max-h-6 {
max-height: 1.5rem;
}
.max-h-7 {
max-height: 1.75rem;
}
.max-h-8 {
max-height: 2rem;
}
.max-h-9 {
max-height: 2.25rem;
}
.max-h-10 {
max-height: 2.5rem;
}
.max-h-11 {
max-height: 2.75rem;
}
.max-h-12 {
max-height: 3rem;
}
.max-h-14 {
max-height: 3.5rem;
}
.max-h-16 {
max-height: 4rem;
}
.max-h-20 {
max-height: 5rem;
}
.max-h-24 {
max-height: 6rem;
}
.max-h-28 {
max-height: 7rem;
}
.max-h-32 {
max-height: 8rem;
}
.max-h-36 {
max-height: 9rem;
}
.max-h-40 {
max-height: 10rem;
}
.max-h-44 {
max-height: 11rem;
}
.max-h-48 {
max-height: 12rem;
}
.max-h-52 {
max-height: 13rem;
}
.max-h-56 {
max-height: 14rem;
}
.max-h-60 {
max-height: 15rem;
}
.max-h-64 {
max-height: 16rem;
}
.max-h-72 {
max-height: 18rem;
}
.max-h-80 {
max-height: 20rem;
}
.max-h-96 {
max-height: 24rem;
}
.max-h-px {
max-height: 1px;
}
.max-h-0\.5 {
max-height: 0.125rem;
}
.max-h-1\.5 {
max-height: 0.375rem;
}
.max-h-2\.5 {
max-height: 0.625rem;
}
.max-h-3\.5 {
max-height: 0.875rem;
}
.max-h-full {
max-height: 100%;
}
.max-h-screen {
max-height: 100vh;
}
.min-h-0 {
min-height: 0px;
}
.min-h-full {
min-height: 100%;
}
.min-h-screen {
min-height: 100vh;
}
.w-0 {
width: 0px;
}
.w-1 {
width: 0.25rem;
}
.w-2 {
width: 0.5rem;
}
.w-3 {
width: 0.75rem;
}
.w-4 {
width: 1rem;
}
.w-5 {
width: 1.25rem;
}
.w-6 {
width: 1.5rem;
}
.w-7 {
width: 1.75rem;
}
.w-8 {
width: 2rem;
}
.w-9 {
width: 2.25rem;
}
.w-10 {
width: 2.5rem;
}
.w-11 {
width: 2.75rem;
}
.w-12 {
width: 3rem;
}
.w-14 {
width: 3.5rem;
}
.w-16 {
width: 4rem;
}
.w-20 {
width: 5rem;
}
.w-24 {
width: 6rem;
}
.w-28 {
width: 7rem;
}
.w-32 {
width: 8rem;
}
.w-36 {
width: 9rem;
}
.w-40 {
width: 10rem;
}
.w-44 {
width: 11rem;
}
.w-48 {
width: 12rem;
}
.w-52 {
width: 13rem;
}
.w-56 {
width: 14rem;
}
.w-60 {
width: 15rem;
}
.w-64 {
width: 16rem;
}
.w-72 {
width: 18rem;
}
.w-80 {
width: 20rem;
}
.w-96 {
width: 24rem;
}
.w-auto {
width: auto;
}
.w-px {
width: 1px;
}
.w-0\.5 {
width: 0.125rem;
}
.w-1\.5 {
width: 0.375rem;
}
.w-2\.5 {
width: 0.625rem;
}
.w-3\.5 {
width: 0.875rem;
}
.w-1\/2 {
width: 50%;
}
.w-1\/3 {
width: 33.333333%;
}
.w-2\/3 {
width: 66.666667%;
}
.w-1\/4 {
width: 25%;
}
.w-2\/4 {
width: 50%;
}
.w-3\/4 {
width: 75%;
}
.w-1\/5 {
width: 20%;
}
.w-2\/5 {
width: 40%;
}
.w-3\/5 {
width: 60%;
}
.w-4\/5 {
width: 80%;
}
.w-1\/6 {
width: 16.666667%;
}
.w-2\/6 {
width: 33.333333%;
}
.w-3\/6 {
width: 50%;
}
.w-4\/6 {
width: 66.666667%;
}
.w-5\/6 {
width: 83.333333%;
}
.w-1\/12 {
width: 8.333333%;
}
.w-2\/12 {
width: 16.666667%;
}
.w-3\/12 {
width: 25%;
}
.w-4\/12 {
width: 33.333333%;
}
.w-5\/12 {
width: 41.666667%;
}
.w-6\/12 {
width: 50%;
}
.w-7\/12 {
width: 58.333333%;
}
.w-8\/12 {
width: 66.666667%;
}
.w-9\/12 {
width: 75%;
}
.w-10\/12 {
width: 83.333333%;
}
.w-11\/12 {
width: 91.666667%;
}
.w-full {
width: 100%;
}
.w-screen {
width: 100vw;
}
.w-min {
width: -webkit-min-content;
width: -moz-min-content;
width: min-content;
}
.w-max {
width: -webkit-max-content;
width: -moz-max-content;
width: max-content;
}
.min-w-0 {
min-width: 0px;
}
.min-w-full {
min-width: 100%;
}
.min-w-min {
min-width: -webkit-min-content;
min-width: -moz-min-content;
min-width: min-content;
}
.min-w-max {
min-width: -webkit-max-content;
min-width: -moz-max-content;
min-width: max-content;
}
.max-w-0 {
max-width: 0rem;
}
.max-w-none {
max-width: none;
}
.max-w-xs {
max-width: 20rem;
}
.max-w-sm {
max-width: 24rem;
}
.max-w-md {
max-width: 28rem;
}
.max-w-lg {
max-width: 32rem;
}
.max-w-xl {
max-width: 36rem;
}
.max-w-2xl {
max-width: 42rem;
}
.max-w-3xl {
max-width: 48rem;
}
.max-w-4xl {
max-width: 56rem;
}
.max-w-5xl {
max-width: 64rem;
}
.max-w-6xl {
max-width: 72rem;
}
.max-w-7xl {
max-width: 80rem;
}
.max-w-full {
max-width: 100%;
}
.max-w-min {
max-width: -webkit-min-content;
max-width: -moz-min-content;
max-width: min-content;
}
.max-w-max {
max-width: -webkit-max-content;
max-width: -moz-max-content;
max-width: max-content;
}
.max-w-prose {
max-width: 65ch;
}
.max-w-screen-sm {
max-width: 640px;
}
.max-w-screen-md {
max-width: 768px;
}
.max-w-screen-lg {
max-width: 1024px;
}
.max-w-screen-xl {
max-width: 1280px;
}
.max-w-screen-2xl {
max-width: 1536px;
}
.flex-1 {
flex: 1 1 0%;
}
.flex-auto {
flex: 1 1 auto;
}
.flex-initial {
flex: 0 1 auto;
}
.flex-none {
flex: none;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.flex-shrink {
flex-shrink: 1;
}
.flex-grow-0 {
flex-grow: 0;
}
.flex-grow {
flex-grow: 1;
}
.table-auto {
table-layout: auto;
}
.table-fixed {
table-layout: fixed;
}
.border-collapse {
border-collapse: collapse;
}
.border-separate {
border-collapse: separate;
}
.transform {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform-gpu {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform-none {
transform: none;
}
.origin-center {
transform-origin: center;
}
.origin-top {
transform-origin: top;
}
.origin-top-right {
transform-origin: top right;
}
.origin-right {
transform-origin: right;
}
.origin-bottom-right {
transform-origin: bottom right;
}
.origin-bottom {
transform-origin: bottom;
}
.origin-bottom-left {
transform-origin: bottom left;
}
.origin-left {
transform-origin: left;
}
.origin-top-left {
transform-origin: top left;
}
.translate-x-0 {
--tw-translate-x: 0px;
}
.translate-x-1 {
--tw-translate-x: 0.25rem;
}
.translate-x-2 {
--tw-translate-x: 0.5rem;
}
.translate-x-3 {
--tw-translate-x: 0.75rem;
}
.translate-x-4 {
--tw-translate-x: 1rem;
}
.translate-x-5 {
--tw-translate-x: 1.25rem;
}
.translate-x-6 {
--tw-translate-x: 1.5rem;
}
.translate-x-7 {
--tw-translate-x: 1.75rem;
}
.translate-x-8 {
--tw-translate-x: 2rem;
}
.translate-x-9 {
--tw-translate-x: 2.25rem;
}
.translate-x-10 {
--tw-translate-x: 2.5rem;
}
.translate-x-11 {
--tw-translate-x: 2.75rem;
}
.translate-x-12 {
--tw-translate-x: 3rem;
}
.translate-x-14 {
--tw-translate-x: 3.5rem;
}
.translate-x-16 {
--tw-translate-x: 4rem;
}
.translate-x-20 {
--tw-translate-x: 5rem;
}
.translate-x-24 {
--tw-translate-x: 6rem;
}
.translate-x-28 {
--tw-translate-x: 7rem;
}
.translate-x-32 {
--tw-translate-x: 8rem;
}
.translate-x-36 {
--tw-translate-x: 9rem;
}
.translate-x-40 {
--tw-translate-x: 10rem;
}
.translate-x-44 {
--tw-translate-x: 11rem;
}
.translate-x-48 {
--tw-translate-x: 12rem;
}
.translate-x-52 {
--tw-translate-x: 13rem;
}
.translate-x-56 {
--tw-translate-x: 14rem;
}
.translate-x-60 {
--tw-translate-x: 15rem;
}
.translate-x-64 {
--tw-translate-x: 16rem;
}
.translate-x-72 {
--tw-translate-x: 18rem;
}
.translate-x-80 {
--tw-translate-x: 20rem;
}
.translate-x-96 {
--tw-translate-x: 24rem;
}
.translate-x-px {
--tw-translate-x: 1px;
}
.translate-x-0\.5 {
--tw-translate-x: 0.125rem;
}
.translate-x-1\.5 {
--tw-translate-x: 0.375rem;
}
.translate-x-2\.5 {
--tw-translate-x: 0.625rem;
}
.translate-x-3\.5 {
--tw-translate-x: 0.875rem;
}
.-translate-x-0 {
--tw-translate-x: 0px;
}
.-translate-x-1 {
--tw-translate-x: -0.25rem;
}
.-translate-x-2 {
--tw-translate-x: -0.5rem;
}
.-translate-x-3 {
--tw-translate-x: -0.75rem;
}
.-translate-x-4 {
--tw-translate-x: -1rem;
}
.-translate-x-5 {
--tw-translate-x: -1.25rem;
}
.-translate-x-6 {
--tw-translate-x: -1.5rem;
}
.-translate-x-7 {
--tw-translate-x: -1.75rem;
}
.-translate-x-8 {
--tw-translate-x: -2rem;
}
.-translate-x-9 {
--tw-translate-x: -2.25rem;
}
.-translate-x-10 {
--tw-translate-x: -2.5rem;
}
.-translate-x-11 {
--tw-translate-x: -2.75rem;
}
.-translate-x-12 {
--tw-translate-x: -3rem;
}
.-translate-x-14 {
--tw-translate-x: -3.5rem;
}
.-translate-x-16 {
--tw-translate-x: -4rem;
}
.-translate-x-20 {
--tw-translate-x: -5rem;
}
.-translate-x-24 {
--tw-translate-x: -6rem;
}
.-translate-x-28 {
--tw-translate-x: -7rem;
}
.-translate-x-32 {
--tw-translate-x: -8rem;
}
.-translate-x-36 {
--tw-translate-x: -9rem;
}
.-translate-x-40 {
--tw-translate-x: -10rem;
}
.-translate-x-44 {
--tw-translate-x: -11rem;
}
.-translate-x-48 {
--tw-translate-x: -12rem;
}
.-translate-x-52 {
--tw-translate-x: -13rem;
}
.-translate-x-56 {
--tw-translate-x: -14rem;
}
.-translate-x-60 {
--tw-translate-x: -15rem;
}
.-translate-x-64 {
--tw-translate-x: -16rem;
}
.-translate-x-72 {
--tw-translate-x: -18rem;
}
.-translate-x-80 {
--tw-translate-x: -20rem;
}
.-translate-x-96 {
--tw-translate-x: -24rem;
}
.-translate-x-px {
--tw-translate-x: -1px;
}
.-translate-x-0\.5 {
--tw-translate-x: -0.125rem;
}
.-translate-x-1\.5 {
--tw-translate-x: -0.375rem;
}
.-translate-x-2\.5 {
--tw-translate-x: -0.625rem;
}
.-translate-x-3\.5 {
--tw-translate-x: -0.875rem;
}
.translate-x-1\/2 {
--tw-translate-x: 50%;
}
.translate-x-1\/3 {
--tw-translate-x: 33.333333%;
}
.translate-x-2\/3 {
--tw-translate-x: 66.666667%;
}
.translate-x-1\/4 {
--tw-translate-x: 25%;
}
.translate-x-2\/4 {
--tw-translate-x: 50%;
}
.translate-x-3\/4 {
--tw-translate-x: 75%;
}
.translate-x-full {
--tw-translate-x: 100%;
}
.-translate-x-1\/2 {
--tw-translate-x: -50%;
}
.-translate-x-1\/3 {
--tw-translate-x: -33.333333%;
}
.-translate-x-2\/3 {
--tw-translate-x: -66.666667%;
}
.-translate-x-1\/4 {
--tw-translate-x: -25%;
}
.-translate-x-2\/4 {
--tw-translate-x: -50%;
}
.-translate-x-3\/4 {
--tw-translate-x: -75%;
}
.-translate-x-full {
--tw-translate-x: -100%;
}
.translate-y-0 {
--tw-translate-y: 0px;
}
.translate-y-1 {
--tw-translate-y: 0.25rem;
}
.translate-y-2 {
--tw-translate-y: 0.5rem;
}
.translate-y-3 {
--tw-translate-y: 0.75rem;
}
.translate-y-4 {
--tw-translate-y: 1rem;
}
.translate-y-5 {
--tw-translate-y: 1.25rem;
}
.translate-y-6 {
--tw-translate-y: 1.5rem;
}
.translate-y-7 {
--tw-translate-y: 1.75rem;
}
.translate-y-8 {
--tw-translate-y: 2rem;
}
.translate-y-9 {
--tw-translate-y: 2.25rem;
}
.translate-y-10 {
--tw-translate-y: 2.5rem;
}
.translate-y-11 {
--tw-translate-y: 2.75rem;
}
.translate-y-12 {
--tw-translate-y: 3rem;
}
.translate-y-14 {
--tw-translate-y: 3.5rem;
}
.translate-y-16 {
--tw-translate-y: 4rem;
}
.translate-y-20 {
--tw-translate-y: 5rem;
}
.translate-y-24 {
--tw-translate-y: 6rem;
}
.translate-y-28 {
--tw-translate-y: 7rem;
}
.translate-y-32 {
--tw-translate-y: 8rem;
}
.translate-y-36 {
--tw-translate-y: 9rem;
}
.translate-y-40 {
--tw-translate-y: 10rem;
}
.translate-y-44 {
--tw-translate-y: 11rem;
}
.translate-y-48 {
--tw-translate-y: 12rem;
}
.translate-y-52 {
--tw-translate-y: 13rem;
}
.translate-y-56 {
--tw-translate-y: 14rem;
}
.translate-y-60 {
--tw-translate-y: 15rem;
}
.translate-y-64 {
--tw-translate-y: 16rem;
}
.translate-y-72 {
--tw-translate-y: 18rem;
}
.translate-y-80 {
--tw-translate-y: 20rem;
}
.translate-y-96 {
--tw-translate-y: 24rem;
}
.translate-y-px {
--tw-translate-y: 1px;
}
.translate-y-0\.5 {
--tw-translate-y: 0.125rem;
}
.translate-y-1\.5 {
--tw-translate-y: 0.375rem;
}
.translate-y-2\.5 {
--tw-translate-y: 0.625rem;
}
.translate-y-3\.5 {
--tw-translate-y: 0.875rem;
}
.-translate-y-0 {
--tw-translate-y: 0px;
}
.-translate-y-1 {
--tw-translate-y: -0.25rem;
}
.-translate-y-2 {
--tw-translate-y: -0.5rem;
}
.-translate-y-3 {
--tw-translate-y: -0.75rem;
}
.-translate-y-4 {
--tw-translate-y: -1rem;
}
.-translate-y-5 {
--tw-translate-y: -1.25rem;
}
.-translate-y-6 {
--tw-translate-y: -1.5rem;
}
.-translate-y-7 {
--tw-translate-y: -1.75rem;
}
.-translate-y-8 {
--tw-translate-y: -2rem;
}
.-translate-y-9 {
--tw-translate-y: -2.25rem;
}
.-translate-y-10 {
--tw-translate-y: -2.5rem;
}
.-translate-y-11 {
--tw-translate-y: -2.75rem;
}
.-translate-y-12 {
--tw-translate-y: -3rem;
}
.-translate-y-14 {
--tw-translate-y: -3.5rem;
}
.-translate-y-16 {
--tw-translate-y: -4rem;
}
.-translate-y-20 {
--tw-translate-y: -5rem;
}
.-translate-y-24 {
--tw-translate-y: -6rem;
}
.-translate-y-28 {
--tw-translate-y: -7rem;
}
.-translate-y-32 {
--tw-translate-y: -8rem;
}
.-translate-y-36 {
--tw-translate-y: -9rem;
}
.-translate-y-40 {
--tw-translate-y: -10rem;
}
.-translate-y-44 {
--tw-translate-y: -11rem;
}
.-translate-y-48 {
--tw-translate-y: -12rem;
}
.-translate-y-52 {
--tw-translate-y: -13rem;
}
.-translate-y-56 {
--tw-translate-y: -14rem;
}
.-translate-y-60 {
--tw-translate-y: -15rem;
}
.-translate-y-64 {
--tw-translate-y: -16rem;
}
.-translate-y-72 {
--tw-translate-y: -18rem;
}
.-translate-y-80 {
--tw-translate-y: -20rem;
}
.-translate-y-96 {
--tw-translate-y: -24rem;
}
.-translate-y-px {
--tw-translate-y: -1px;
}
.-translate-y-0\.5 {
--tw-translate-y: -0.125rem;
}
.-translate-y-1\.5 {
--tw-translate-y: -0.375rem;
}
.-translate-y-2\.5 {
--tw-translate-y: -0.625rem;
}
.-translate-y-3\.5 {
--tw-translate-y: -0.875rem;
}
.translate-y-1\/2 {
--tw-translate-y: 50%;
}
.translate-y-1\/3 {
--tw-translate-y: 33.333333%;
}
.translate-y-2\/3 {
--tw-translate-y: 66.666667%;
}
.translate-y-1\/4 {
--tw-translate-y: 25%;
}
.translate-y-2\/4 {
--tw-translate-y: 50%;
}
.translate-y-3\/4 {
--tw-translate-y: 75%;
}
.translate-y-full {
--tw-translate-y: 100%;
}
.-translate-y-1\/2 {
--tw-translate-y: -50%;
}
.-translate-y-1\/3 {
--tw-translate-y: -33.333333%;
}
.-translate-y-2\/3 {
--tw-translate-y: -66.666667%;
}
.-translate-y-1\/4 {
--tw-translate-y: -25%;
}
.-translate-y-2\/4 {
--tw-translate-y: -50%;
}
.-translate-y-3\/4 {
--tw-translate-y: -75%;
}
.-translate-y-full {
--tw-translate-y: -100%;
}
.hover\:translate-x-0:hover {
--tw-translate-x: 0px;
}
.hover\:translate-x-1:hover {
--tw-translate-x: 0.25rem;
}
.hover\:translate-x-2:hover {
--tw-translate-x: 0.5rem;
}
.hover\:translate-x-3:hover {
--tw-translate-x: 0.75rem;
}
.hover\:translate-x-4:hover {
--tw-translate-x: 1rem;
}
.hover\:translate-x-5:hover {
--tw-translate-x: 1.25rem;
}
.hover\:translate-x-6:hover {
--tw-translate-x: 1.5rem;
}
.hover\:translate-x-7:hover {
--tw-translate-x: 1.75rem;
}
.hover\:translate-x-8:hover {
--tw-translate-x: 2rem;
}
.hover\:translate-x-9:hover {
--tw-translate-x: 2.25rem;
}
.hover\:translate-x-10:hover {
--tw-translate-x: 2.5rem;
}
.hover\:translate-x-11:hover {
--tw-translate-x: 2.75rem;
}
.hover\:translate-x-12:hover {
--tw-translate-x: 3rem;
}
.hover\:translate-x-14:hover {
--tw-translate-x: 3.5rem;
}
.hover\:translate-x-16:hover {
--tw-translate-x: 4rem;
}
.hover\:translate-x-20:hover {
--tw-translate-x: 5rem;
}
.hover\:translate-x-24:hover {
--tw-translate-x: 6rem;
}
.hover\:translate-x-28:hover {
--tw-translate-x: 7rem;
}
.hover\:translate-x-32:hover {
--tw-translate-x: 8rem;
}
.hover\:translate-x-36:hover {
--tw-translate-x: 9rem;
}
.hover\:translate-x-40:hover {
--tw-translate-x: 10rem;
}
.hover\:translate-x-44:hover {
--tw-translate-x: 11rem;
}
.hover\:translate-x-48:hover {
--tw-translate-x: 12rem;
}
.hover\:translate-x-52:hover {
--tw-translate-x: 13rem;
}
.hover\:translate-x-56:hover {
--tw-translate-x: 14rem;
}
.hover\:translate-x-60:hover {
--tw-translate-x: 15rem;
}
.hover\:translate-x-64:hover {
--tw-translate-x: 16rem;
}
.hover\:translate-x-72:hover {
--tw-translate-x: 18rem;
}
.hover\:translate-x-80:hover {
--tw-translate-x: 20rem;
}
.hover\:translate-x-96:hover {
--tw-translate-x: 24rem;
}
.hover\:translate-x-px:hover {
--tw-translate-x: 1px;
}
.hover\:translate-x-0\.5:hover {
--tw-translate-x: 0.125rem;
}
.hover\:translate-x-1\.5:hover {
--tw-translate-x: 0.375rem;
}
.hover\:translate-x-2\.5:hover {
--tw-translate-x: 0.625rem;
}
.hover\:translate-x-3\.5:hover {
--tw-translate-x: 0.875rem;
}
.hover\:-translate-x-0:hover {
--tw-translate-x: 0px;
}
.hover\:-translate-x-1:hover {
--tw-translate-x: -0.25rem;
}
.hover\:-translate-x-2:hover {
--tw-translate-x: -0.5rem;
}
.hover\:-translate-x-3:hover {
--tw-translate-x: -0.75rem;
}
.hover\:-translate-x-4:hover {
--tw-translate-x: -1rem;
}
.hover\:-translate-x-5:hover {
--tw-translate-x: -1.25rem;
}
.hover\:-translate-x-6:hover {
--tw-translate-x: -1.5rem;
}
.hover\:-translate-x-7:hover {
--tw-translate-x: -1.75rem;
}
.hover\:-translate-x-8:hover {
--tw-translate-x: -2rem;
}
.hover\:-translate-x-9:hover {
--tw-translate-x: -2.25rem;
}
.hover\:-translate-x-10:hover {
--tw-translate-x: -2.5rem;
}
.hover\:-translate-x-11:hover {
--tw-translate-x: -2.75rem;
}
.hover\:-translate-x-12:hover {
--tw-translate-x: -3rem;
}
.hover\:-translate-x-14:hover {
--tw-translate-x: -3.5rem;
}
.hover\:-translate-x-16:hover {
--tw-translate-x: -4rem;
}
.hover\:-translate-x-20:hover {
--tw-translate-x: -5rem;
}
.hover\:-translate-x-24:hover {
--tw-translate-x: -6rem;
}
.hover\:-translate-x-28:hover {
--tw-translate-x: -7rem;
}
.hover\:-translate-x-32:hover {
--tw-translate-x: -8rem;
}
.hover\:-translate-x-36:hover {
--tw-translate-x: -9rem;
}
.hover\:-translate-x-40:hover {
--tw-translate-x: -10rem;
}
.hover\:-translate-x-44:hover {
--tw-translate-x: -11rem;
}
.hover\:-translate-x-48:hover {
--tw-translate-x: -12rem;
}
.hover\:-translate-x-52:hover {
--tw-translate-x: -13rem;
}
.hover\:-translate-x-56:hover {
--tw-translate-x: -14rem;
}
.hover\:-translate-x-60:hover {
--tw-translate-x: -15rem;
}
.hover\:-translate-x-64:hover {
--tw-translate-x: -16rem;
}
.hover\:-translate-x-72:hover {
--tw-translate-x: -18rem;
}
.hover\:-translate-x-80:hover {
--tw-translate-x: -20rem;
}
.hover\:-translate-x-96:hover {
--tw-translate-x: -24rem;
}
.hover\:-translate-x-px:hover {
--tw-translate-x: -1px;
}
.hover\:-translate-x-0\.5:hover {
--tw-translate-x: -0.125rem;
}
.hover\:-translate-x-1\.5:hover {
--tw-translate-x: -0.375rem;
}
.hover\:-translate-x-2\.5:hover {
--tw-translate-x: -0.625rem;
}
.hover\:-translate-x-3\.5:hover {
--tw-translate-x: -0.875rem;
}
.hover\:translate-x-1\/2:hover {
--tw-translate-x: 50%;
}
.hover\:translate-x-1\/3:hover {
--tw-translate-x: 33.333333%;
}
.hover\:translate-x-2\/3:hover {
--tw-translate-x: 66.666667%;
}
.hover\:translate-x-1\/4:hover {
--tw-translate-x: 25%;
}
.hover\:translate-x-2\/4:hover {
--tw-translate-x: 50%;
}
.hover\:translate-x-3\/4:hover {
--tw-translate-x: 75%;
}
.hover\:translate-x-full:hover {
--tw-translate-x: 100%;
}
.hover\:-translate-x-1\/2:hover {
--tw-translate-x: -50%;
}
.hover\:-translate-x-1\/3:hover {
--tw-translate-x: -33.333333%;
}
.hover\:-translate-x-2\/3:hover {
--tw-translate-x: -66.666667%;
}
.hover\:-translate-x-1\/4:hover {
--tw-translate-x: -25%;
}
.hover\:-translate-x-2\/4:hover {
--tw-translate-x: -50%;
}
.hover\:-translate-x-3\/4:hover {
--tw-translate-x: -75%;
}
.hover\:-translate-x-full:hover {
--tw-translate-x: -100%;
}
.hover\:translate-y-0:hover {
--tw-translate-y: 0px;
}
.hover\:translate-y-1:hover {
--tw-translate-y: 0.25rem;
}
.hover\:translate-y-2:hover {
--tw-translate-y: 0.5rem;
}
.hover\:translate-y-3:hover {
--tw-translate-y: 0.75rem;
}
.hover\:translate-y-4:hover {
--tw-translate-y: 1rem;
}
.hover\:translate-y-5:hover {
--tw-translate-y: 1.25rem;
}
.hover\:translate-y-6:hover {
--tw-translate-y: 1.5rem;
}
.hover\:translate-y-7:hover {
--tw-translate-y: 1.75rem;
}
.hover\:translate-y-8:hover {
--tw-translate-y: 2rem;
}
.hover\:translate-y-9:hover {
--tw-translate-y: 2.25rem;
}
.hover\:translate-y-10:hover {
--tw-translate-y: 2.5rem;
}
.hover\:translate-y-11:hover {
--tw-translate-y: 2.75rem;
}
.hover\:translate-y-12:hover {
--tw-translate-y: 3rem;
}
.hover\:translate-y-14:hover {
--tw-translate-y: 3.5rem;
}
.hover\:translate-y-16:hover {
--tw-translate-y: 4rem;
}
.hover\:translate-y-20:hover {
--tw-translate-y: 5rem;
}
.hover\:translate-y-24:hover {
--tw-translate-y: 6rem;
}
.hover\:translate-y-28:hover {
--tw-translate-y: 7rem;
}
.hover\:translate-y-32:hover {
--tw-translate-y: 8rem;
}
.hover\:translate-y-36:hover {
--tw-translate-y: 9rem;
}
.hover\:translate-y-40:hover {
--tw-translate-y: 10rem;
}
.hover\:translate-y-44:hover {
--tw-translate-y: 11rem;
}
.hover\:translate-y-48:hover {
--tw-translate-y: 12rem;
}
.hover\:translate-y-52:hover {
--tw-translate-y: 13rem;
}
.hover\:translate-y-56:hover {
--tw-translate-y: 14rem;
}
.hover\:translate-y-60:hover {
--tw-translate-y: 15rem;
}
.hover\:translate-y-64:hover {
--tw-translate-y: 16rem;
}
.hover\:translate-y-72:hover {
--tw-translate-y: 18rem;
}
.hover\:translate-y-80:hover {
--tw-translate-y: 20rem;
}
.hover\:translate-y-96:hover {
--tw-translate-y: 24rem;
}
.hover\:translate-y-px:hover {
--tw-translate-y: 1px;
}
.hover\:translate-y-0\.5:hover {
--tw-translate-y: 0.125rem;
}
.hover\:translate-y-1\.5:hover {
--tw-translate-y: 0.375rem;
}
.hover\:translate-y-2\.5:hover {
--tw-translate-y: 0.625rem;
}
.hover\:translate-y-3\.5:hover {
--tw-translate-y: 0.875rem;
}
.hover\:-translate-y-0:hover {
--tw-translate-y: 0px;
}
.hover\:-translate-y-1:hover {
--tw-translate-y: -0.25rem;
}
.hover\:-translate-y-2:hover {
--tw-translate-y: -0.5rem;
}
.hover\:-translate-y-3:hover {
--tw-translate-y: -0.75rem;
}
.hover\:-translate-y-4:hover {
--tw-translate-y: -1rem;
}
.hover\:-translate-y-5:hover {
--tw-translate-y: -1.25rem;
}
.hover\:-translate-y-6:hover {
--tw-translate-y: -1.5rem;
}
.hover\:-translate-y-7:hover {
--tw-translate-y: -1.75rem;
}
.hover\:-translate-y-8:hover {
--tw-translate-y: -2rem;
}
.hover\:-translate-y-9:hover {
--tw-translate-y: -2.25rem;
}
.hover\:-translate-y-10:hover {
--tw-translate-y: -2.5rem;
}
.hover\:-translate-y-11:hover {
--tw-translate-y: -2.75rem;
}
.hover\:-translate-y-12:hover {
--tw-translate-y: -3rem;
}
.hover\:-translate-y-14:hover {
--tw-translate-y: -3.5rem;
}
.hover\:-translate-y-16:hover {
--tw-translate-y: -4rem;
}
.hover\:-translate-y-20:hover {
--tw-translate-y: -5rem;
}
.hover\:-translate-y-24:hover {
--tw-translate-y: -6rem;
}
.hover\:-translate-y-28:hover {
--tw-translate-y: -7rem;
}
gitextract_wlq1uio1/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .styleci.yml ├── LICENSE ├── README.md ├── app/ │ ├── Console/ │ │ └── Kernel.php │ ├── Exceptions/ │ │ └── Handler.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Auth/ │ │ │ │ ├── AuthenticatedSessionController.php │ │ │ │ ├── ConfirmablePasswordController.php │ │ │ │ ├── NewPasswordController.php │ │ │ │ └── PasswordResetLinkController.php │ │ │ ├── Controller.php │ │ │ └── ListingController.php │ │ ├── Kernel.php │ │ ├── Middleware/ │ │ │ ├── Authenticate.php │ │ │ ├── EncryptCookies.php │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ ├── RedirectIfAuthenticated.php │ │ │ ├── TrimStrings.php │ │ │ ├── TrustHosts.php │ │ │ ├── TrustProxies.php │ │ │ └── VerifyCsrfToken.php │ │ └── Requests/ │ │ └── Auth/ │ │ └── LoginRequest.php │ ├── Models/ │ │ ├── Click.php │ │ ├── Listing.php │ │ ├── Tag.php │ │ └── User.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ └── View/ │ └── Components/ │ ├── AppLayout.php │ └── GuestLayout.php ├── artisan ├── bootstrap/ │ ├── app.php │ └── cache/ │ └── .gitignore ├── composer.json ├── config/ │ ├── app.php │ ├── auth.php │ ├── broadcasting.php │ ├── cache.php │ ├── cors.php │ ├── database.php │ ├── filesystems.php │ ├── hashing.php │ ├── logging.php │ ├── mail.php │ ├── queue.php │ ├── services.php │ ├── session.php │ └── view.php ├── database/ │ ├── .gitignore │ ├── factories/ │ │ ├── ListingFactory.php │ │ ├── TagFactory.php │ │ └── UserFactory.php │ ├── migrations/ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ ├── 2019_05_03_000001_create_customer_columns.php │ │ ├── 2019_05_03_000002_create_subscriptions_table.php │ │ ├── 2019_05_03_000003_create_subscription_items_table.php │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ ├── 2021_06_16_045807_create_listings_table.php │ │ ├── 2021_06_16_050029_create_clicks_table.php │ │ ├── 2021_06_16_050037_create_tags_table.php │ │ └── 2021_06_16_050053_create_listing_tag_table.php │ └── seeders/ │ └── DatabaseSeeder.php ├── package.json ├── phpunit.xml ├── public/ │ ├── .htaccess │ ├── css/ │ │ └── app.css │ ├── index.php │ ├── js/ │ │ └── app.js │ ├── mix-manifest.json │ ├── robots.txt │ └── web.config ├── resources/ │ ├── css/ │ │ └── app.css │ ├── js/ │ │ ├── app.js │ │ └── bootstrap.js │ ├── lang/ │ │ └── en/ │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php │ └── views/ │ ├── auth/ │ │ ├── confirm-password.blade.php │ │ ├── forgot-password.blade.php │ │ ├── login.blade.php │ │ ├── register.blade.php │ │ ├── reset-password.blade.php │ │ └── verify-email.blade.php │ ├── components/ │ │ ├── application-logo.blade.php │ │ ├── auth-card.blade.php │ │ ├── auth-session-status.blade.php │ │ ├── auth-validation-errors.blade.php │ │ ├── button.blade.php │ │ ├── dropdown-link.blade.php │ │ ├── dropdown.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ ├── hero.blade.php │ │ ├── input.blade.php │ │ ├── label.blade.php │ │ ├── nav-link.blade.php │ │ └── responsive-nav-link.blade.php │ ├── dashboard.blade.php │ ├── layouts/ │ │ ├── app.blade.php │ │ ├── guest.blade.php │ │ └── navigation.blade.php │ ├── listings/ │ │ ├── create.blade.php │ │ ├── index.blade.php │ │ └── show.blade.php │ └── welcome.blade.php ├── routes/ │ ├── api.php │ ├── auth.php │ ├── channels.php │ ├── console.php │ └── web.php ├── server.php ├── storage/ │ ├── app/ │ │ └── .gitignore │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ ├── testing/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ └── logs/ │ └── .gitignore ├── tailwind.config.js ├── tests/ │ ├── CreatesApplication.php │ ├── Feature/ │ │ ├── AuthenticationTest.php │ │ ├── EmailVerificationTest.php │ │ ├── ExampleTest.php │ │ ├── PasswordConfirmationTest.php │ │ ├── PasswordResetTest.php │ │ └── RegistrationTest.php │ ├── TestCase.php │ └── Unit/ │ └── ExampleTest.php └── webpack.mix.js
SYMBOL INDEX (777 symbols across 53 files)
FILE: app/Console/Kernel.php
class Kernel (line 8) | class Kernel extends ConsoleKernel
method schedule (line 25) | protected function schedule(Schedule $schedule)
method commands (line 35) | protected function commands()
FILE: app/Exceptions/Handler.php
class Handler (line 8) | class Handler extends ExceptionHandler
method register (line 35) | public function register()
FILE: app/Http/Controllers/Auth/AuthenticatedSessionController.php
class AuthenticatedSessionController (line 11) | class AuthenticatedSessionController extends Controller
method create (line 18) | public function create()
method store (line 29) | public function store(LoginRequest $request)
method destroy (line 44) | public function destroy(Request $request)
FILE: app/Http/Controllers/Auth/ConfirmablePasswordController.php
class ConfirmablePasswordController (line 11) | class ConfirmablePasswordController extends Controller
method show (line 18) | public function show()
method store (line 29) | public function store(Request $request)
FILE: app/Http/Controllers/Auth/NewPasswordController.php
class NewPasswordController (line 13) | class NewPasswordController extends Controller
method create (line 21) | public function create(Request $request)
method store (line 34) | public function store(Request $request)
FILE: app/Http/Controllers/Auth/PasswordResetLinkController.php
class PasswordResetLinkController (line 9) | class PasswordResetLinkController extends Controller
method create (line 16) | public function create()
method store (line 29) | public function store(Request $request)
FILE: app/Http/Controllers/Controller.php
class Controller (line 10) | class Controller extends BaseController
FILE: app/Http/Controllers/ListingController.php
class ListingController (line 14) | class ListingController extends Controller
method index (line 16) | public function index(Request $request)
method show (line 49) | public function show(Listing $listing, Request $request)
method apply (line 54) | public function apply(Listing $listing, Request $request)
method create (line 65) | public function create()
method store (line 70) | public function store(Request $request)
FILE: app/Http/Kernel.php
class Kernel (line 7) | class Kernel extends HttpKernel
FILE: app/Http/Middleware/Authenticate.php
class Authenticate (line 7) | class Authenticate extends Middleware
method redirectTo (line 15) | protected function redirectTo($request)
FILE: app/Http/Middleware/EncryptCookies.php
class EncryptCookies (line 7) | class EncryptCookies extends Middleware
FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
class PreventRequestsDuringMaintenance (line 7) | class PreventRequestsDuringMaintenance extends Middleware
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
class RedirectIfAuthenticated (line 10) | class RedirectIfAuthenticated
method handle (line 20) | public function handle(Request $request, Closure $next, ...$guards)
FILE: app/Http/Middleware/TrimStrings.php
class TrimStrings (line 7) | class TrimStrings extends Middleware
FILE: app/Http/Middleware/TrustHosts.php
class TrustHosts (line 7) | class TrustHosts extends Middleware
method hosts (line 14) | public function hosts()
FILE: app/Http/Middleware/TrustProxies.php
class TrustProxies (line 8) | class TrustProxies extends Middleware
FILE: app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken (line 7) | class VerifyCsrfToken extends Middleware
FILE: app/Http/Requests/Auth/LoginRequest.php
class LoginRequest (line 12) | class LoginRequest extends FormRequest
method authorize (line 19) | public function authorize()
method rules (line 29) | public function rules()
method authenticate (line 44) | public function authenticate()
method ensureIsNotRateLimited (line 66) | public function ensureIsNotRateLimited()
method throttleKey (line 89) | public function throttleKey()
FILE: app/Models/Click.php
class Click (line 8) | class Click extends Model
method listing (line 14) | public function listing()
FILE: app/Models/Listing.php
class Listing (line 8) | class Listing extends Model
method getRouteKeyName (line 14) | public function getRouteKeyName()
method clicks (line 19) | public function clicks()
method user (line 24) | public function user()
method tags (line 29) | public function tags()
FILE: app/Models/Tag.php
class Tag (line 8) | class Tag extends Model
method listings (line 14) | public function listings()
FILE: app/Models/User.php
class User (line 11) | class User extends Authenticatable
method listings (line 36) | public function listings()
FILE: app/Providers/AppServiceProvider.php
class AppServiceProvider (line 7) | class AppServiceProvider extends ServiceProvider
method register (line 14) | public function register()
method boot (line 24) | public function boot()
FILE: app/Providers/AuthServiceProvider.php
class AuthServiceProvider (line 8) | class AuthServiceProvider extends ServiceProvider
method boot (line 24) | public function boot()
FILE: app/Providers/BroadcastServiceProvider.php
class BroadcastServiceProvider (line 8) | class BroadcastServiceProvider extends ServiceProvider
method boot (line 15) | public function boot()
FILE: app/Providers/EventServiceProvider.php
class EventServiceProvider (line 10) | class EventServiceProvider extends ServiceProvider
method boot (line 28) | public function boot()
FILE: app/Providers/RouteServiceProvider.php
class RouteServiceProvider (line 11) | class RouteServiceProvider extends ServiceProvider
method boot (line 36) | public function boot()
method configureRateLimiting (line 57) | protected function configureRateLimiting()
FILE: app/View/Components/AppLayout.php
class AppLayout (line 7) | class AppLayout extends Component
method render (line 14) | public function render()
FILE: app/View/Components/GuestLayout.php
class GuestLayout (line 7) | class GuestLayout extends Component
method render (line 14) | public function render()
FILE: database/factories/ListingFactory.php
class ListingFactory (line 9) | class ListingFactory extends Factory
method definition (line 23) | public function definition()
FILE: database/factories/TagFactory.php
class TagFactory (line 9) | class TagFactory extends Factory
method definition (line 23) | public function definition()
FILE: database/factories/UserFactory.php
class UserFactory (line 9) | class UserFactory extends Factory
method definition (line 23) | public function definition()
FILE: database/migrations/2014_10_12_000000_create_users_table.php
class CreateUsersTable (line 7) | class CreateUsersTable extends Migration
method up (line 14) | public function up()
method down (line 31) | public function down()
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
class CreatePasswordResetsTable (line 7) | class CreatePasswordResetsTable extends Migration
method up (line 14) | public function up()
method down (line 28) | public function down()
FILE: database/migrations/2019_05_03_000001_create_customer_columns.php
class CreateCustomerColumns (line 7) | class CreateCustomerColumns extends Migration
method up (line 14) | public function up()
method down (line 29) | public function down()
FILE: database/migrations/2019_05_03_000002_create_subscriptions_table.php
class CreateSubscriptionsTable (line 7) | class CreateSubscriptionsTable extends Migration
method up (line 14) | public function up()
method down (line 37) | public function down()
FILE: database/migrations/2019_05_03_000003_create_subscription_items_table.php
class CreateSubscriptionItemsTable (line 7) | class CreateSubscriptionItemsTable extends Migration
method up (line 14) | public function up()
method down (line 34) | public function down()
FILE: database/migrations/2019_08_19_000000_create_failed_jobs_table.php
class CreateFailedJobsTable (line 7) | class CreateFailedJobsTable extends Migration
method up (line 14) | public function up()
method down (line 32) | public function down()
FILE: database/migrations/2021_06_16_045807_create_listings_table.php
class CreateListingsTable (line 7) | class CreateListingsTable extends Migration
method up (line 14) | public function up()
method down (line 37) | public function down()
FILE: database/migrations/2021_06_16_050029_create_clicks_table.php
class CreateClicksTable (line 7) | class CreateClicksTable extends Migration
method up (line 14) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2021_06_16_050037_create_tags_table.php
class CreateTagsTable (line 7) | class CreateTagsTable extends Migration
method up (line 14) | public function up()
method down (line 29) | public function down()
FILE: database/migrations/2021_06_16_050053_create_listing_tag_table.php
class CreateListingTagTable (line 7) | class CreateListingTagTable extends Migration
method up (line 14) | public function up()
method down (line 27) | public function down()
FILE: database/seeders/DatabaseSeeder.php
class DatabaseSeeder (line 10) | class DatabaseSeeder extends Seeder
method run (line 17) | public function run()
FILE: public/js/app.js
function _defineProperty (line 15) | function _defineProperty(obj, key, value) {
function ownKeys (line 30) | function ownKeys(object, enumerableOnly) {
function _objectSpread2 (line 44) | function _objectSpread2(target) {
function domReady (line 66) | function domReady() {
function arrayUnique (line 75) | function arrayUnique(array) {
function isTesting (line 78) | function isTesting() {
function checkedAttrLooseCompare (line 81) | function checkedAttrLooseCompare(valueA, valueB) {
function warnIfMalformedTemplate (line 84) | function warnIfMalformedTemplate(el, directive) {
function kebabCase (line 91) | function kebabCase(subject) {
function camelCase (line 94) | function camelCase(subject) {
function walk (line 97) | function walk(el, callback) {
function debounce (line 106) | function debounce(func, wait) {
function tryCatch (line 134) | function tryCatch(cb, {
function saferEval (line 146) | function saferEval(el, expression, dataContext, additionalHelperVariable...
function saferEvalNoReturn (line 158) | function saferEvalNoReturn(el, expression, dataContext, additionalHelper...
function isXAttr (line 189) | function isXAttr(attr) {
function getXAttrs (line 193) | function getXAttrs(el, component, type) {
function sortDirectives (line 211) | function sortDirectives(directives) {
function parseHtmlAttribute (line 220) | function parseHtmlAttribute({
function isBooleanAttr (line 235) | function isBooleanAttr(attrName) {
function replaceAtAndColonWithStandardSyntax (line 241) | function replaceAtAndColonWithStandardSyntax(name) {
function convertClassStringToArray (line 250) | function convertClassStringToArray(classList, filterFn = Boolean) {
function transitionIn (line 256) | function transitionIn(el, show, reject, component, forceSkip = false) {
function transitionOut (line 284) | function transitionOut(el, hide, reject, component, forceSkip = false) {
function transitionHelperIn (line 309) | function transitionHelperIn(el, modifiers, showCallback, reject) {
function transitionHelperOut (line 325) | function transitionHelperOut(el, modifiers, settingBothSidesOfTransition...
function modifierValue (line 345) | function modifierValue(modifiers, key, fallback) {
function transitionHelper (line 375) | function transitionHelper(el, modifiers, hook1, hook2, reject, styleValu...
function transitionClassesIn (line 435) | function transitionClassesIn(el, component, directives, showCallback, re...
function transitionClassesOut (line 447) | function transitionClassesOut(el, component, directives, hideCallback, r...
function transitionClasses (line 459) | function transitionClasses(el, classesDuring, classesStart, classesEnd, ...
function transition (line 497) | function transition(el, stages, type, reject) {
function isNumeric (line 540) | function isNumeric(subject) {
function once (line 545) | function once(callback) {
function handleForDirective (line 555) | function handleForDirective(component, templateEl, expression, initialUp...
function parseForExpression (line 585) | function parseForExpression(expression) {
function getIterationScopeVariables (line 610) | function getIterationScopeVariables(iteratorNames, item, index, items, e...
function generateKeyForIteration (line 619) | function generateKeyForIteration(component, el, index, iterationScopeVar...
function evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement (line 626) | function evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement(comp...
function addElementInLoopAfterCurrentEl (line 642) | function addElementInLoopAfterCurrentEl(templateEl, currentEl) {
function lookAheadForMatchingKeyedElementAndMoveItIfFound (line 648) | function lookAheadForMatchingKeyedElementAndMoveItIfFound(nextEl, curren...
function removeAnyLeftOverElementsFromPreviousUpdate (line 667) | function removeAnyLeftOverElementsFromPreviousUpdate(currentEl, componen...
function handleAttributeBindingDirective (line 680) | function handleAttributeBindingDirective(component, el, attrName, expres...
function setIfChanged (line 752) | function setIfChanged(el, attrName, value) {
function updateSelect (line 758) | function updateSelect(el, value) {
function handleTextDirective (line 767) | function handleTextDirective(el, output, expression) {
function handleHtmlDirective (line 776) | function handleHtmlDirective(component, el, expression, extraVars) {
function handleShowDirective (line 780) | function handleShowDirective(component, el, value, modifiers, initialUpd...
function handleIfDirective (line 848) | function handleIfDirective(component, el, expressionResult, initialUpdat...
function registerListener (line 865) | function registerListener(component, el, event, modifiers, expression, e...
function runListenerHandler (line 940) | function runListenerHandler(component, expression, e, extraVars) {
function isKeyEvent (line 948) | function isKeyEvent(event) {
function isListeningForASpecificKeyThatHasntBeenPressed (line 952) | function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {
function keyToModifier (line 988) | function keyToModifier(key) {
function registerModelListener (line 1002) | function registerModelListener(component, el, modifiers, expression, ext...
function generateModelAssignmentFunction (line 1014) | function generateModelAssignmentFunction(el, modifiers, expression) {
function safeParseNumber (line 1048) | function safeParseNumber(rawValue) {
function isUndefined (line 1059) | function isUndefined(obj) {
function isFunction (line 1062) | function isFunction(obj) {
function isObject (line 1065) | function isObject(obj) {
function registerProxy (line 1069) | function registerProxy(proxy, value) {
function wrapValue (line 1074) | function wrapValue(membrane, value) {
function unwrapDescriptor (line 1082) | function unwrapDescriptor(descriptor) {
function lockShadowTarget (line 1088) | function lockShadowTarget(membrane, shadowTarget, originalTarget) {
class ReactiveProxyHandler (line 1104) | class ReactiveProxyHandler {
method constructor (line 1105) | constructor(membrane, value) {
method get (line 1109) | get(shadowTarget, key) {
method set (line 1116) | set(shadowTarget, key, value) {
method deleteProperty (line 1132) | deleteProperty(shadowTarget, key) {
method apply (line 1138) | apply(shadowTarget, thisArg, argArray) {
method construct (line 1141) | construct(target, argArray, newTarget) {
method has (line 1144) | has(shadowTarget, key) {
method ownKeys (line 1149) | ownKeys(shadowTarget) {
method isExtensible (line 1153) | isExtensible(shadowTarget) {
method setPrototypeOf (line 1165) | setPrototypeOf(shadowTarget, prototype) {
method getPrototypeOf (line 1167) | getPrototypeOf(shadowTarget) {
method getOwnPropertyDescriptor (line 1171) | getOwnPropertyDescriptor(shadowTarget, key) {
method preventExtensions (line 1198) | preventExtensions(shadowTarget) {
method defineProperty (line 1204) | defineProperty(shadowTarget, key, descriptor) {
function wrapReadOnlyValue (line 1228) | function wrapReadOnlyValue(membrane, value) {
class ReadOnlyHandler (line 1231) | class ReadOnlyHandler {
method constructor (line 1232) | constructor(membrane, value) {
method get (line 1236) | get(shadowTarget, key) {
method set (line 1243) | set(shadowTarget, key, value) {
method deleteProperty (line 1246) | deleteProperty(shadowTarget, key) {
method apply (line 1249) | apply(shadowTarget, thisArg, argArray) {
method construct (line 1252) | construct(target, argArray, newTarget) {
method has (line 1255) | has(shadowTarget, key) {
method ownKeys (line 1260) | ownKeys(shadowTarget) {
method setPrototypeOf (line 1264) | setPrototypeOf(shadowTarget, prototype) {
method getOwnPropertyDescriptor (line 1266) | getOwnPropertyDescriptor(shadowTarget, key) {
method preventExtensions (line 1296) | preventExtensions(shadowTarget) {
method defineProperty (line 1299) | defineProperty(shadowTarget, key, descriptor) {
function createShadowTarget (line 1303) | function createShadowTarget(value) {
function defaultValueIsObservable (line 1314) | function defaultValueIsObservable(value) {
function wrapDescriptor (line 1336) | function wrapDescriptor(membrane, descriptor, getValue) {
class ReactiveMembrane (line 1361) | class ReactiveMembrane {
method constructor (line 1362) | constructor(options) {
method getProxy (line 1376) | getProxy(value) {
method getReadOnlyProxy (line 1387) | getReadOnlyProxy(value) {
method unwrapProxy (line 1395) | unwrapProxy(p) {
method getReactiveState (line 1398) | getReactiveState(value, distortedValue) {
function wrap (line 1429) | function wrap(data, mutationCallback) {
function unwrap$1 (line 1442) | function unwrap$1(membrane, observable) {
class Component (line 1452) | class Component {
method constructor (line 1453) | constructor(el, componentForClone = null) {
method getUnobservedData (line 1541) | getUnobservedData() {
method wrapDataInObservable (line 1545) | wrapDataInObservable(data) {
method walkAndSkipNestedComponents (line 1597) | walkAndSkipNestedComponents(el, callback, initializeComponentCallback ...
method initializeElements (line 1614) | initializeElements(rootEl, extraVars = () => {}, componentForClone = f...
method initializeElement (line 1628) | initializeElement(el, extraVars, shouldRegisterListeners = true) {
method updateElements (line 1639) | updateElements(rootEl, extraVars = () => {}) {
method executeAndClearNextTickStack (line 1651) | executeAndClearNextTickStack(el) {
method executeAndClearRemainingShowDirectiveStack (line 1664) | executeAndClearRemainingShowDirectiveStack() {
method updateElement (line 1686) | updateElement(el, extraVars) {
method registerListeners (line 1690) | registerListeners(el, extraVars) {
method resolveBoundAttributes (line 1709) | resolveBoundAttributes(el, initialUpdate = false, extraVars) {
method evaluateReturnExpression (line 1761) | evaluateReturnExpression(el, expression, extraVars = () => {}) {
method evaluateCommandExpression (line 1767) | evaluateCommandExpression(el, expression, extraVars = () => {}) {
method getDispatchFunction (line 1773) | getDispatchFunction(el) {
method listenForNewElementsToInitialize (line 1782) | listenForNewElementsToInitialize() {
method getRefsProxy (line 1824) | getRefsProxy() {
function createInstance (line 2183) | function createInstance(defaultConfig) {
function Cancel (line 2244) | function Cancel(message) {
function CancelToken (line 2276) | function CancelToken(executor) {
function Axios (line 2363) | function Axios(instanceConfig) {
function InterceptorManager (line 2460) | function InterceptorManager() {
function throwIfCancellationRequested (line 2589) | function throwIfCancellationRequested(config) {
function getMergedValue (line 2750) | function getMergedValue(target, source) {
function mergeDeepProperties (line 2761) | function mergeDeepProperties(prop) {
function setContentTypeIfUnset (line 2897) | function setContentTypeIfUnset(headers, value) {
function getDefaultAdapter (line 2903) | function getDefaultAdapter() {
function encode (line 3023) | function encode(val) {
function resolveURL (line 3256) | function resolveURL(url) {
function isArray (line 3456) | function isArray(val) {
function isUndefined (line 3466) | function isUndefined(val) {
function isBuffer (line 3476) | function isBuffer(val) {
function isArrayBuffer (line 3487) | function isArrayBuffer(val) {
function isFormData (line 3497) | function isFormData(val) {
function isArrayBufferView (line 3507) | function isArrayBufferView(val) {
function isString (line 3523) | function isString(val) {
function isNumber (line 3533) | function isNumber(val) {
function isObject (line 3543) | function isObject(val) {
function isPlainObject (line 3553) | function isPlainObject(val) {
function isDate (line 3568) | function isDate(val) {
function isFile (line 3578) | function isFile(val) {
function isBlob (line 3588) | function isBlob(val) {
function isFunction (line 3598) | function isFunction(val) {
function isStream (line 3608) | function isStream(val) {
function isURLSearchParams (line 3618) | function isURLSearchParams(val) {
function trim (line 3628) | function trim(str) {
function isStandardBrowserEnv (line 3647) | function isStandardBrowserEnv() {
function forEach (line 3671) | function forEach(obj, fn) {
function merge (line 3715) | function merge(/* obj1, obj2, obj3, ... */) {
function extend (line 3743) | function extend(a, b, thisArg) {
function stripBOM (line 3760) | function stripBOM(content) {
function apply (line 4329) | function apply(func, thisArg, args) {
function arrayAggregator (line 4349) | function arrayAggregator(array, setter, iteratee, accumulator) {
function arrayEach (line 4369) | function arrayEach(array, iteratee) {
function arrayEachRight (line 4390) | function arrayEachRight(array, iteratee) {
function arrayEvery (line 4411) | function arrayEvery(array, predicate) {
function arrayFilter (line 4432) | function arrayFilter(array, predicate) {
function arrayIncludes (line 4456) | function arrayIncludes(array, value) {
function arrayIncludesWith (line 4470) | function arrayIncludesWith(array, value, comparator) {
function arrayMap (line 4491) | function arrayMap(array, iteratee) {
function arrayPush (line 4510) | function arrayPush(array, values) {
function arrayReduce (line 4533) | function arrayReduce(array, iteratee, accumulator, initAccum) {
function arrayReduceRight (line 4558) | function arrayReduceRight(array, iteratee, accumulator, initAccum) {
function arraySome (line 4579) | function arraySome(array, predicate) {
function asciiToArray (line 4607) | function asciiToArray(string) {
function asciiWords (line 4618) | function asciiWords(string) {
function baseFindKey (line 4633) | function baseFindKey(collection, predicate, eachFunc) {
function baseFindIndex (line 4655) | function baseFindIndex(array, predicate, fromIndex, fromRight) {
function baseIndexOf (line 4676) | function baseIndexOf(array, value, fromIndex) {
function baseIndexOfWith (line 4692) | function baseIndexOfWith(array, value, fromIndex, comparator) {
function baseIsNaN (line 4711) | function baseIsNaN(value) {
function baseMean (line 4724) | function baseMean(array, iteratee) {
function baseProperty (line 4736) | function baseProperty(key) {
function basePropertyOf (line 4749) | function basePropertyOf(object) {
function baseReduce (line 4768) | function baseReduce(collection, iteratee, accumulator, initAccum, eachFu...
function baseSortBy (line 4787) | function baseSortBy(array, comparer) {
function baseSum (line 4806) | function baseSum(array, iteratee) {
function baseTimes (line 4829) | function baseTimes(n, iteratee) {
function baseToPairs (line 4848) | function baseToPairs(object, props) {
function baseTrim (line 4861) | function baseTrim(string) {
function baseUnary (line 4874) | function baseUnary(func) {
function baseValues (line 4890) | function baseValues(object, props) {
function cacheHas (line 4904) | function cacheHas(cache, key) {
function charsStartIndex (line 4917) | function charsStartIndex(strSymbols, chrSymbols) {
function charsEndIndex (line 4934) | function charsEndIndex(strSymbols, chrSymbols) {
function countHolders (line 4949) | function countHolders(array, placeholder) {
function escapeStringChar (line 4987) | function escapeStringChar(chr) {
function getValue (line 4999) | function getValue(object, key) {
function hasUnicode (line 5010) | function hasUnicode(string) {
function hasUnicodeWord (line 5021) | function hasUnicodeWord(string) {
function iteratorToArray (line 5032) | function iteratorToArray(iterator) {
function mapToArray (line 5049) | function mapToArray(map) {
function overArg (line 5067) | function overArg(func, transform) {
function replaceHolders (line 5082) | function replaceHolders(array, placeholder) {
function setToArray (line 5105) | function setToArray(set) {
function setToPairs (line 5122) | function setToPairs(set) {
function strictIndexOf (line 5142) | function strictIndexOf(array, value, fromIndex) {
function strictLastIndexOf (line 5164) | function strictLastIndexOf(array, value, fromIndex) {
function stringSize (line 5181) | function stringSize(string) {
function stringToArray (line 5194) | function stringToArray(string) {
function trimmedEndIndex (line 5208) | function trimmedEndIndex(string) {
function unicodeSize (line 5231) | function unicodeSize(string) {
function unicodeToArray (line 5246) | function unicodeToArray(string) {
function unicodeWords (line 5257) | function unicodeWords(string) {
function lodash (line 5534) | function lodash(value) {
function object (line 5555) | function object() {}
function baseLodash (line 5575) | function baseLodash() {
function LodashWrapper (line 5586) | function LodashWrapper(value, chainAll) {
function LazyWrapper (line 5671) | function LazyWrapper(value) {
function lazyClone (line 5689) | function lazyClone() {
function lazyReverse (line 5708) | function lazyReverse() {
function lazyValue (line 5728) | function lazyValue() {
function Hash (line 5790) | function Hash(entries) {
function hashClear (line 5808) | function hashClear() {
function hashDelete (line 5823) | function hashDelete(key) {
function hashGet (line 5838) | function hashGet(key) {
function hashHas (line 5856) | function hashHas(key) {
function hashSet (line 5871) | function hashSet(key, value) {
function ListCache (line 5894) | function ListCache(entries) {
function listCacheClear (line 5912) | function listCacheClear() {
function listCacheDelete (line 5926) | function listCacheDelete(key) {
function listCacheGet (line 5952) | function listCacheGet(key) {
function listCacheHas (line 5968) | function listCacheHas(key) {
function listCacheSet (line 5982) | function listCacheSet(key, value) {
function MapCache (line 6011) | function MapCache(entries) {
function mapCacheClear (line 6029) | function mapCacheClear() {
function mapCacheDelete (line 6047) | function mapCacheDelete(key) {
function mapCacheGet (line 6062) | function mapCacheGet(key) {
function mapCacheHas (line 6075) | function mapCacheHas(key) {
function mapCacheSet (line 6089) | function mapCacheSet(key, value) {
function SetCache (line 6115) | function SetCache(values) {
function setCacheAdd (line 6135) | function setCacheAdd(value) {
function setCacheHas (line 6149) | function setCacheHas(value) {
function Stack (line 6166) | function Stack(entries) {
function stackClear (line 6178) | function stackClear() {
function stackDelete (line 6192) | function stackDelete(key) {
function stackGet (line 6209) | function stackGet(key) {
function stackHas (line 6222) | function stackHas(key) {
function stackSet (line 6236) | function stackSet(key, value) {
function arrayLikeKeys (line 6269) | function arrayLikeKeys(value, inherited) {
function arraySample (line 6303) | function arraySample(array) {
function arraySampleSize (line 6316) | function arraySampleSize(array, n) {
function arrayShuffle (line 6327) | function arrayShuffle(array) {
function assignMergeValue (line 6340) | function assignMergeValue(object, key, value) {
function assignValue (line 6357) | function assignValue(object, key, value) {
function assocIndexOf (line 6373) | function assocIndexOf(array, key) {
function baseAggregator (line 6394) | function baseAggregator(collection, setter, iteratee, accumulator) {
function baseAssign (line 6410) | function baseAssign(object, source) {
function baseAssignIn (line 6423) | function baseAssignIn(object, source) {
function baseAssignValue (line 6436) | function baseAssignValue(object, key, value) {
function baseAt (line 6457) | function baseAt(object, paths) {
function baseClamp (line 6478) | function baseClamp(number, lower, upper) {
function baseClone (line 6506) | function baseClone(value, bitmask, customizer, key, object, stack) {
function baseConforms (line 6589) | function baseConforms(source) {
function baseConformsTo (line 6604) | function baseConformsTo(object, source, props) {
function baseDelay (line 6632) | function baseDelay(func, wait, args) {
function baseDifference (line 6650) | function baseDifference(array, values, iteratee, comparator) {
function baseEvery (line 6724) | function baseEvery(collection, predicate) {
function baseExtremum (line 6743) | function baseExtremum(array, iteratee, comparator) {
function baseFill (line 6772) | function baseFill(array, value, start, end) {
function baseFilter (line 6798) | function baseFilter(collection, predicate) {
function baseFlatten (line 6819) | function baseFlatten(array, depth, predicate, isStrict, result) {
function baseForOwn (line 6875) | function baseForOwn(object, iteratee) {
function baseForOwnRight (line 6887) | function baseForOwnRight(object, iteratee) {
function baseFunctions (line 6900) | function baseFunctions(object, props) {
function baseGet (line 6914) | function baseGet(object, path) {
function baseGetAllKeys (line 6937) | function baseGetAllKeys(object, keysFunc, symbolsFunc) {
function baseGetTag (line 6949) | function baseGetTag(value) {
function baseGt (line 6967) | function baseGt(value, other) {
function baseHas (line 6979) | function baseHas(object, key) {
function baseHasIn (line 6991) | function baseHasIn(object, key) {
function baseInRange (line 7004) | function baseInRange(number, start, end) {
function baseIntersection (line 7018) | function baseIntersection(arrays, iteratee, comparator) {
function baseInverter (line 7082) | function baseInverter(object, setter, iteratee, accumulator) {
function baseInvoke (line 7099) | function baseInvoke(object, path, args) {
function baseIsArguments (line 7113) | function baseIsArguments(value) {
function baseIsArrayBuffer (line 7124) | function baseIsArrayBuffer(value) {
function baseIsDate (line 7135) | function baseIsDate(value) {
function baseIsEqual (line 7153) | function baseIsEqual(value, other, bitmask, customizer, stack) {
function baseIsEqualDeep (line 7177) | function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, ...
function baseIsMap (line 7229) | function baseIsMap(value) {
function baseIsMatch (line 7243) | function baseIsMatch(object, source, matchData, customizer) {
function baseIsNative (line 7295) | function baseIsNative(value) {
function baseIsRegExp (line 7310) | function baseIsRegExp(value) {
function baseIsSet (line 7321) | function baseIsSet(value) {
function baseIsTypedArray (line 7332) | function baseIsTypedArray(value) {
function baseIteratee (line 7344) | function baseIteratee(value) {
function baseKeys (line 7368) | function baseKeys(object) {
function baseKeysIn (line 7388) | function baseKeysIn(object) {
function baseLt (line 7412) | function baseLt(value, other) {
function baseMap (line 7424) | function baseMap(collection, iteratee) {
function baseMatches (line 7441) | function baseMatches(source) {
function baseMatchesProperty (line 7459) | function baseMatchesProperty(path, srcValue) {
function baseMerge (line 7482) | function baseMerge(object, source, srcIndex, customizer, stack) {
function baseMergeDeep (line 7519) | function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customi...
function baseNth (line 7589) | function baseNth(array, n) {
function baseOrderBy (line 7607) | function baseOrderBy(collection, iteratees, orders) {
function basePick (line 7645) | function basePick(object, paths) {
function basePickBy (line 7660) | function basePickBy(object, paths, predicate) {
function basePropertyDeep (line 7683) | function basePropertyDeep(path) {
function basePullAll (line 7700) | function basePullAll(array, values, iteratee, comparator) {
function basePullAt (line 7736) | function basePullAt(array, indexes) {
function baseRandom (line 7763) | function baseRandom(lower, upper) {
function baseRange (line 7778) | function baseRange(start, end, step, fromRight) {
function baseRepeat (line 7798) | function baseRepeat(string, n) {
function baseRest (line 7826) | function baseRest(func, start) {
function baseSample (line 7837) | function baseSample(collection) {
function baseSampleSize (line 7849) | function baseSampleSize(collection, n) {
function baseSet (line 7864) | function baseSet(object, path, value, customizer) {
function baseShuffle (line 7935) | function baseShuffle(collection) {
function baseSlice (line 7948) | function baseSlice(array, start, end) {
function baseSome (line 7978) | function baseSome(collection, predicate) {
function baseSortedIndex (line 8000) | function baseSortedIndex(array, value, retHighest) {
function baseSortedIndexBy (line 8034) | function baseSortedIndexBy(array, value, iteratee, retHighest) {
function baseSortedUniq (line 8086) | function baseSortedUniq(array, iteratee) {
function baseToNumber (line 8112) | function baseToNumber(value) {
function baseToString (line 8130) | function baseToString(value) {
function baseUniq (line 8155) | function baseUniq(array, iteratee, comparator) {
function baseUnset (line 8215) | function baseUnset(object, path) {
function baseUpdate (line 8231) | function baseUpdate(object, path, updater, customizer) {
function baseWhile (line 8246) | function baseWhile(array, predicate, isDrop, fromRight) {
function baseWrapperValue (line 8268) | function baseWrapperValue(value, actions) {
function baseXor (line 8288) | function baseXor(arrays, iteratee, comparator) {
function baseZipObject (line 8318) | function baseZipObject(props, values, assignFunc) {
function castArrayLikeObject (line 8338) | function castArrayLikeObject(value) {
function castFunction (line 8349) | function castFunction(value) {
function castPath (line 8361) | function castPath(value, object) {
function castSlice (line 8388) | function castSlice(array, start, end) {
function cloneBuffer (line 8412) | function cloneBuffer(buffer, isDeep) {
function cloneArrayBuffer (line 8430) | function cloneArrayBuffer(arrayBuffer) {
function cloneDataView (line 8444) | function cloneDataView(dataView, isDeep) {
function cloneRegExp (line 8456) | function cloneRegExp(regexp) {
function cloneSymbol (line 8469) | function cloneSymbol(symbol) {
function cloneTypedArray (line 8481) | function cloneTypedArray(typedArray, isDeep) {
function compareAscending (line 8494) | function compareAscending(value, other) {
function compareMultiple (line 8538) | function compareMultiple(object, other, orders) {
function composeArgs (line 8576) | function composeArgs(args, partials, holders, isCurried) {
function composeArgsRight (line 8611) | function composeArgsRight(args, partials, holders, isCurried) {
function copyArray (line 8645) | function copyArray(source, array) {
function copyObject (line 8666) | function copyObject(source, props, object, customizer) {
function copySymbols (line 8700) | function copySymbols(source, object) {
function copySymbolsIn (line 8712) | function copySymbolsIn(source, object) {
function createAggregator (line 8724) | function createAggregator(setter, initializer) {
function createAssigner (line 8740) | function createAssigner(assigner) {
function createBaseEach (line 8774) | function createBaseEach(eachFunc, fromRight) {
function createBaseFor (line 8802) | function createBaseFor(fromRight) {
function createBind (line 8829) | function createBind(func, bitmask, thisArg) {
function createCaseFirst (line 8847) | function createCaseFirst(methodName) {
function createCompounder (line 8874) | function createCompounder(callback) {
function createCtor (line 8888) | function createCtor(Ctor) {
function createCurry (line 8922) | function createCurry(func, bitmask, arity) {
function createFind (line 8957) | function createFind(findIndexFunc) {
function createFlow (line 8977) | function createFlow(fromRight) {
function createHybrid (line 9050) | function createHybrid(func, bitmask, thisArg, partials, holders, partial...
function createInverter (line 9112) | function createInverter(setter, toIteratee) {
function createMathOperation (line 9126) | function createMathOperation(operator, defaultValue) {
function createOver (line 9159) | function createOver(arrayFunc) {
function createPadding (line 9180) | function createPadding(length, chars) {
function createPartial (line 9205) | function createPartial(func, bitmask, thisArg, partials) {
function createRange (line 9235) | function createRange(fromRight) {
function createRelationalOperation (line 9260) | function createRelationalOperation(operator) {
function createRecurry (line 9287) | function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, pa...
function createRound (line 9320) | function createRound(methodName) {
function createToPairs (line 9356) | function createToPairs(keysFunc) {
function createWrap (line 9394) | function createWrap(func, bitmask, thisArg, partials, holders, argPos, a...
function customDefaultsAssignIn (line 9461) | function customDefaultsAssignIn(objValue, srcValue, key, object) {
function customDefaultsMerge (line 9483) | function customDefaultsMerge(objValue, srcValue, key, object, source, st...
function customOmitClone (line 9502) | function customOmitClone(value) {
function equalArrays (line 9519) | function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
function equalByTag (line 9598) | function equalByTag(object, other, tag, bitmask, customizer, equalFunc, ...
function equalObjects (line 9676) | function equalObjects(object, other, bitmask, customizer, equalFunc, sta...
function flatRest (line 9748) | function flatRest(func) {
function getAllKeys (line 9759) | function getAllKeys(object) {
function getAllKeysIn (line 9771) | function getAllKeysIn(object) {
function getFuncName (line 9793) | function getFuncName(func) {
function getHolder (line 9815) | function getHolder(func) {
function getIteratee (line 9831) | function getIteratee() {
function getMapData (line 9845) | function getMapData(map, key) {
function getMatchData (line 9859) | function getMatchData(object) {
function getNative (line 9880) | function getNative(object, key) {
function getRawTag (line 9892) | function getRawTag(value) {
function getView (line 9988) | function getView(start, end, transforms) {
function getWrapDetails (line 10013) | function getWrapDetails(source) {
function hasPath (line 10027) | function hasPath(object, path, hasFunc) {
function initCloneArray (line 10056) | function initCloneArray(array) {
function initCloneObject (line 10075) | function initCloneObject(object) {
function initCloneByTag (line 10093) | function initCloneByTag(object, tag, isDeep) {
function insertWrapDetails (line 10137) | function insertWrapDetails(source, details) {
function isFlattenable (line 10155) | function isFlattenable(value) {
function isIndex (line 10168) | function isIndex(value, length) {
function isIterateeCall (line 10188) | function isIterateeCall(value, index, object) {
function isKey (line 10210) | function isKey(value, object) {
function isKeyable (line 10230) | function isKeyable(value) {
function isLaziable (line 10245) | function isLaziable(func) {
function isMasked (line 10266) | function isMasked(func) {
function isPrototype (line 10286) | function isPrototype(value) {
function isStrictComparable (line 10301) | function isStrictComparable(value) {
function matchesStrictComparable (line 10314) | function matchesStrictComparable(key, srcValue) {
function memoizeCapped (line 10332) | function memoizeCapped(func) {
function mergeData (line 10360) | function mergeData(data, source) {
function nativeKeysIn (line 10424) | function nativeKeysIn(object) {
function objectToString (line 10441) | function objectToString(value) {
function overRest (line 10454) | function overRest(func, start, transform) {
function parent (line 10483) | function parent(object, path) {
function reorder (line 10497) | function reorder(array, indexes) {
function safeGet (line 10517) | function safeGet(object, key) {
function setWrapToString (line 10577) | function setWrapToString(wrapper, reference, bitmask) {
function shortOut (line 10591) | function shortOut(func) {
function shuffleSelf (line 10619) | function shuffleSelf(array, size) {
function toKey (line 10661) | function toKey(value) {
function toSource (line 10676) | function toSource(func) {
function updateWrapDetails (line 10696) | function updateWrapDetails(details, bitmask) {
function wrapperClone (line 10713) | function wrapperClone(wrapper) {
function chunk (line 10747) | function chunk(array, size, guard) {
function compact (line 10782) | function compact(array) {
function concat (line 10819) | function concat() {
function drop (line 10955) | function drop(array, n, guard) {
function dropRight (line 10989) | function dropRight(array, n, guard) {
function dropRightWhile (line 11034) | function dropRightWhile(array, predicate) {
function dropWhile (line 11075) | function dropWhile(array, predicate) {
function fill (line 11110) | function fill(array, value, start, end) {
function findIndex (line 11157) | function findIndex(array, predicate, fromIndex) {
function findLastIndex (line 11204) | function findLastIndex(array, predicate, fromIndex) {
function flatten (line 11233) | function flatten(array) {
function flattenDeep (line 11252) | function flattenDeep(array) {
function flattenDepth (line 11277) | function flattenDepth(array, depth) {
function fromPairs (line 11301) | function fromPairs(pairs) {
function head (line 11331) | function head(array) {
function indexOf (line 11358) | function indexOf(array, value, fromIndex) {
function initial (line 11384) | function initial(array) {
function join (line 11499) | function join(array, separator) {
function last (line 11517) | function last(array) {
function lastIndexOf (line 11543) | function lastIndexOf(array, value, fromIndex) {
function nth (line 11579) | function nth(array, n) {
function pullAll (line 11628) | function pullAll(array, values) {
function pullAllBy (line 11657) | function pullAllBy(array, values, iteratee) {
function pullAllWith (line 11686) | function pullAllWith(array, values, comparator) {
function remove (line 11755) | function remove(array, predicate) {
function reverse (line 11799) | function reverse(array) {
function slice (line 11819) | function slice(array, start, end) {
function sortedIndex (line 11852) | function sortedIndex(array, value) {
function sortedIndexBy (line 11881) | function sortedIndexBy(array, value, iteratee) {
function sortedIndexOf (line 11901) | function sortedIndexOf(array, value) {
function sortedLastIndex (line 11930) | function sortedLastIndex(array, value) {
function sortedLastIndexBy (line 11959) | function sortedLastIndexBy(array, value, iteratee) {
function sortedLastIndexOf (line 11979) | function sortedLastIndexOf(array, value) {
function sortedUniq (line 12005) | function sortedUniq(array) {
function sortedUniqBy (line 12027) | function sortedUniqBy(array, iteratee) {
function tail (line 12047) | function tail(array) {
function take (line 12077) | function take(array, n, guard) {
function takeRight (line 12110) | function takeRight(array, n, guard) {
function takeRightWhile (line 12155) | function takeRightWhile(array, predicate) {
function takeWhile (line 12196) | function takeWhile(array, predicate) {
function uniq (line 12298) | function uniq(array) {
function uniqBy (line 12325) | function uniqBy(array, iteratee) {
function uniqWith (line 12349) | function uniqWith(array, comparator) {
function unzip (line 12373) | function unzip(array) {
function unzipWith (line 12410) | function unzipWith(array, iteratee) {
function zipObject (line 12563) | function zipObject(props, values) {
function zipObjectDeep (line 12582) | function zipObjectDeep(props, values) {
function chain (line 12645) | function chain(value) {
function tap (line 12674) | function tap(value, interceptor) {
function thru (line 12702) | function thru(value, interceptor) {
function wrapperChain (line 12773) | function wrapperChain() {
function wrapperCommit (line 12803) | function wrapperCommit() {
function wrapperNext (line 12829) | function wrapperNext() {
function wrapperToIterator (line 12857) | function wrapperToIterator() {
function wrapperPlant (line 12885) | function wrapperPlant(value) {
function wrapperReverse (line 12925) | function wrapperReverse() {
function wrapperValue (line 12957) | function wrapperValue() {
function every (line 13034) | function every(collection, predicate, guard) {
function filter (line 13083) | function filter(collection, predicate) {
function flatMap (line 13168) | function flatMap(collection, iteratee) {
function flatMapDeep (line 13192) | function flatMapDeep(collection, iteratee) {
function flatMapDepth (line 13217) | function flatMapDepth(collection, iteratee, depth) {
function forEach (line 13252) | function forEach(collection, iteratee) {
function forEachRight (line 13277) | function forEachRight(collection, iteratee) {
function includes (line 13343) | function includes(collection, value, fromIndex, guard) {
function map (line 13464) | function map(collection, iteratee) {
function orderBy (line 13498) | function orderBy(collection, iteratees, orders, guard) {
function reduce (line 13589) | function reduce(collection, iteratee, accumulator) {
function reduceRight (line 13618) | function reduceRight(collection, iteratee, accumulator) {
function reject (line 13659) | function reject(collection, predicate) {
function sample (line 13678) | function sample(collection) {
function sampleSize (line 13703) | function sampleSize(collection, n, guard) {
function shuffle (line 13728) | function shuffle(collection) {
function size (line 13754) | function size(collection) {
function some (line 13804) | function some(collection, predicate, guard) {
function after (line 13902) | function after(n, func) {
function ary (line 13931) | function ary(func, n, guard) {
function before (line 13954) | function before(n, func) {
function curry (line 14110) | function curry(func, arity, guard) {
function curryRight (line 14155) | function curryRight(func, arity, guard) {
function debounce (line 14216) | function debounce(func, wait, options) {
function flip (line 14404) | function flip(func) {
function memoize (line 14452) | function memoize(func, resolver) {
function negate (line 14495) | function negate(predicate) {
function once (line 14529) | function once(func) {
function rest (line 14707) | function rest(func, start) {
function spread (line 14749) | function spread(func, start) {
function throttle (line 14809) | function throttle(func, wait, options) {
function unary (line 14842) | function unary(func) {
function wrap (line 14868) | function wrap(value, wrapper) {
function castArray (line 14907) | function castArray() {
function clone (line 14941) | function clone(value) {
function cloneWith (line 14976) | function cloneWith(value, customizer) {
function cloneDeep (line 14999) | function cloneDeep(value) {
function cloneDeepWith (line 15031) | function cloneDeepWith(value, customizer) {
function conformsTo (line 15060) | function conformsTo(object, source) {
function eq (line 15096) | function eq(value, other) {
function isArrayLike (line 15244) | function isArrayLike(value) {
function isArrayLikeObject (line 15273) | function isArrayLikeObject(value) {
function isBoolean (line 15294) | function isBoolean(value) {
function isElement (line 15354) | function isElement(value) {
function isEmpty (line 15391) | function isEmpty(value) {
function isEqual (line 15443) | function isEqual(value, other) {
function isEqualWith (line 15479) | function isEqualWith(value, other, customizer) {
function isError (line 15503) | function isError(value) {
function isFinite (line 15538) | function isFinite(value) {
function isFunction (line 15559) | function isFunction(value) {
function isInteger (line 15595) | function isInteger(value) {
function isLength (line 15625) | function isLength(value) {
function isObject (line 15655) | function isObject(value) {
function isObjectLike (line 15684) | function isObjectLike(value) {
function isMatch (line 15735) | function isMatch(object, source) {
function isMatchWith (line 15771) | function isMatchWith(object, source, customizer) {
function isNaN (line 15804) | function isNaN(value) {
function isNative (line 15837) | function isNative(value) {
function isNull (line 15861) | function isNull(value) {
function isNil (line 15885) | function isNil(value) {
function isNumber (line 15915) | function isNumber(value) {
function isPlainObject (line 15948) | function isPlainObject(value) {
function isSafeInteger (line 16007) | function isSafeInteger(value) {
function isString (line 16047) | function isString(value) {
function isSymbol (line 16069) | function isSymbol(value) {
function isUndefined (line 16110) | function isUndefined(value) {
function isWeakMap (line 16131) | function isWeakMap(value) {
function isWeakSet (line 16152) | function isWeakSet(value) {
function toArray (line 16231) | function toArray(value) {
function toFinite (line 16270) | function toFinite(value) {
function toInteger (line 16308) | function toInteger(value) {
function toLength (line 16342) | function toLength(value) {
function toNumber (line 16369) | function toNumber(value) {
function toPlainObject (line 16414) | function toPlainObject(value) {
function toSafeInteger (line 16442) | function toSafeInteger(value) {
function toString (line 16469) | function toString(value) {
function create (line 16672) | function create(prototype, properties) {
function findKey (line 16788) | function findKey(object, predicate) {
function findLastKey (line 16827) | function findLastKey(object, predicate) {
function forIn (line 16859) | function forIn(object, iteratee) {
function forInRight (line 16891) | function forInRight(object, iteratee) {
function forOwn (line 16925) | function forOwn(object, iteratee) {
function forOwnRight (line 16955) | function forOwnRight(object, iteratee) {
function functions (line 16982) | function functions(object) {
function functionsIn (line 17009) | function functionsIn(object) {
function get (line 17038) | function get(object, path, defaultValue) {
function has (line 17070) | function has(object, path) {
function hasIn (line 17100) | function hasIn(object, path) {
function keys (line 17218) | function keys(object) {
function keysIn (line 17245) | function keysIn(object) {
function mapKeys (line 17270) | function mapKeys(object, iteratee) {
function mapValues (line 17308) | function mapValues(object, iteratee) {
function omitBy (line 17450) | function omitBy(object, predicate) {
function pickBy (line 17493) | function pickBy(object, predicate) {
function result (line 17535) | function result(object, path, defaultValue) {
function set (line 17585) | function set(object, path, value) {
function setWith (line 17613) | function setWith(object, path, value, customizer) {
function transform (line 17700) | function transform(object, iteratee, accumulator) {
function unset (line 17750) | function unset(object, path) {
function update (line 17781) | function update(object, path, updater) {
function updateWith (line 17809) | function updateWith(object, path, updater, customizer) {
function values (line 17840) | function values(object) {
function valuesIn (line 17868) | function valuesIn(object) {
function clamp (line 17893) | function clamp(number, lower, upper) {
function inRange (line 17947) | function inRange(number, start, end) {
function random (line 17990) | function random(lower, upper, floating) {
function capitalize (line 18071) | function capitalize(string) {
function deburr (line 18093) | function deburr(string) {
function endsWith (line 18121) | function endsWith(string, target, position) {
function escape (line 18163) | function escape(string) {
function escapeRegExp (line 18185) | function escapeRegExp(string) {
function pad (line 18283) | function pad(string, length, chars) {
function padEnd (line 18322) | function padEnd(string, length, chars) {
function padStart (line 18355) | function padStart(string, length, chars) {
function parseInt (line 18389) | function parseInt(string, radix, guard) {
function repeat (line 18420) | function repeat(string, n, guard) {
function replace (line 18448) | function replace() {
function split (line 18499) | function split(string, separator, limit) {
function startsWith (line 18568) | function startsWith(string, target, position) {
function template (line 18682) | function template(string, options, guard) {
function toLower (line 18820) | function toLower(value) {
function toUpper (line 18845) | function toUpper(value) {
function trim (line 18871) | function trim(string, chars, guard) {
function trimEnd (line 18906) | function trimEnd(string, chars, guard) {
function trimStart (line 18939) | function trimStart(string, chars, guard) {
function truncate (line 18990) | function truncate(string, options) {
function unescape (line 19065) | function unescape(string) {
function words (line 19134) | function words(string, pattern, guard) {
function cond (line 19239) | function cond(pairs) {
function conforms (line 19285) | function conforms(source) {
function constant (line 19308) | function constant(value) {
function defaultTo (line 19334) | function defaultTo(value, defaultValue) {
function identity (line 19401) | function identity(value) {
function iteratee (line 19447) | function iteratee(func) {
function matches (line 19486) | function matches(source) {
function matchesProperty (line 19523) | function matchesProperty(path, srcValue) {
function mixin (line 19622) | function mixin(object, source, options) {
function noConflict (line 19671) | function noConflict() {
function noop (line 19690) | function noop() {
function nthArg (line 19714) | function nthArg(n) {
function property (line 19826) | function property(path) {
function propertyOf (line 19851) | function propertyOf(object) {
function stubArray (line 19956) | function stubArray() {
function stubFalse (line 19973) | function stubFalse() {
function stubObject (line 19995) | function stubObject() {
function stubString (line 20012) | function stubString() {
function stubTrue (line 20029) | function stubTrue() {
function times (line 20052) | function times(n, iteratee) {
function toPath (line 20087) | function toPath(value) {
function uniqueId (line 20111) | function uniqueId(prefix) {
function max (line 20220) | function max(array) {
function maxBy (line 20249) | function maxBy(array, iteratee) {
function mean (line 20269) | function mean(array) {
function meanBy (line 20296) | function meanBy(array, iteratee) {
function min (line 20318) | function min(array) {
function minBy (line 20347) | function minBy(array, iteratee) {
function sum (line 20428) | function sum(array) {
function sumBy (line 20457) | function sumBy(array, iteratee) {
function defaultSetTimout (line 21080) | function defaultSetTimout() {
function defaultClearTimeout (line 21083) | function defaultClearTimeout () {
function runTimeout (line 21106) | function runTimeout(fun) {
function runClearTimeout (line 21131) | function runClearTimeout(marker) {
function cleanUpNextTick (line 21163) | function cleanUpNextTick() {
function drainQueue (line 21178) | function drainQueue() {
function Item (line 21216) | function Item(fun, array) {
function noop (line 21230) | function noop() {}
function __webpack_require__ (line 21263) | function __webpack_require__(moduleId) {
FILE: tests/CreatesApplication.php
type CreatesApplication (line 7) | trait CreatesApplication
method createApplication (line 14) | public function createApplication()
FILE: tests/Feature/AuthenticationTest.php
class AuthenticationTest (line 10) | class AuthenticationTest extends TestCase
method test_login_screen_can_be_rendered (line 14) | public function test_login_screen_can_be_rendered()
method test_users_can_authenticate_using_the_login_screen (line 21) | public function test_users_can_authenticate_using_the_login_screen()
method test_users_can_not_authenticate_with_invalid_password (line 34) | public function test_users_can_not_authenticate_with_invalid_password()
FILE: tests/Feature/EmailVerificationTest.php
class EmailVerificationTest (line 13) | class EmailVerificationTest extends TestCase
method test_email_verification_screen_can_be_rendered (line 17) | public function test_email_verification_screen_can_be_rendered()
method test_email_can_be_verified (line 28) | public function test_email_can_be_verified()
method test_email_is_not_verified_with_invalid_hash (line 49) | public function test_email_is_not_verified_with_invalid_hash()
FILE: tests/Feature/ExampleTest.php
class ExampleTest (line 8) | class ExampleTest extends TestCase
method test_example (line 15) | public function test_example()
FILE: tests/Feature/PasswordConfirmationTest.php
class PasswordConfirmationTest (line 9) | class PasswordConfirmationTest extends TestCase
method test_confirm_password_screen_can_be_rendered (line 13) | public function test_confirm_password_screen_can_be_rendered()
method test_password_can_be_confirmed (line 22) | public function test_password_can_be_confirmed()
method test_password_is_not_confirmed_with_invalid_password (line 34) | public function test_password_is_not_confirmed_with_invalid_password()
FILE: tests/Feature/PasswordResetTest.php
class PasswordResetTest (line 11) | class PasswordResetTest extends TestCase
method test_reset_password_link_screen_can_be_rendered (line 15) | public function test_reset_password_link_screen_can_be_rendered()
method test_reset_password_link_can_be_requested (line 22) | public function test_reset_password_link_can_be_requested()
method test_reset_password_screen_can_be_rendered (line 33) | public function test_reset_password_screen_can_be_rendered()
method test_password_can_be_reset_with_valid_token (line 50) | public function test_password_can_be_reset_with_valid_token()
FILE: tests/Feature/RegistrationTest.php
class RegistrationTest (line 9) | class RegistrationTest extends TestCase
method test_registration_screen_can_be_rendered (line 13) | public function test_registration_screen_can_be_rendered()
method test_new_users_can_register (line 20) | public function test_new_users_can_register()
FILE: tests/TestCase.php
class TestCase (line 7) | abstract class TestCase extends BaseTestCase
FILE: tests/Unit/ExampleTest.php
class ExampleTest (line 7) | class ExampleTest extends TestCase
method test_example (line 14) | public function test_example()
Condensed preview — 136 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,175K chars).
[
{
"path": ".editorconfig",
"chars": 220,
"preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_"
},
{
"path": ".gitattributes",
"chars": 111,
"preview": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
},
{
"path": ".gitignore",
"chars": 207,
"preview": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n.env\n.env.backup\n.phpunit.result.cache\ndocker-compose.o"
},
{
"path": ".styleci.yml",
"chars": 181,
"preview": "php:\n preset: laravel\n disabled:\n - no_unused_imports\n finder:\n not-name:\n - index.php\n - server.php\n"
},
{
"path": "LICENSE",
"chars": 1073,
"preview": "MIT License\n\nCopyright (c) 2021 Andrew Schmelyun\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 1287,
"preview": "## Laravel Job Board\n\nThis is an open-source job board application powered by Laravel, origially built for a [video tuto"
},
{
"path": "app/Console/Kernel.php",
"chars": 827,
"preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
},
{
"path": "app/Exceptions/Handler.php",
"chars": 781,
"preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\nuse Throwable;\n\nclas"
},
{
"path": "app/Http/Controllers/Auth/AuthenticatedSessionController.php",
"chars": 1231,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Http\\Requests\\Auth\\LoginReques"
},
{
"path": "app/Http/Controllers/Auth/ConfirmablePasswordController.php",
"chars": 1089,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Providers\\RouteServiceProvider"
},
{
"path": "app/Http/Controllers/Auth/NewPasswordController.php",
"chars": 2293,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Auth\\Events\\PasswordRes"
},
{
"path": "app/Http/Controllers/Auth/PasswordResetLinkController.php",
"chars": 1372,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Http\\Request;\nuse Illum"
},
{
"path": "app/Http/Controllers/Controller.php",
"chars": 361,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\nuse Illuminate\\Foundat"
},
{
"path": "app/Http/Controllers/ListingController.php",
"chars": 4487,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\Listing;\nuse App\\Models\\Tag;\nuse App\\Models\\User;\nuse Illuminate\\"
},
{
"path": "app/Http/Kernel.php",
"chars": 2394,
"preview": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n "
},
{
"path": "app/Http/Middleware/Authenticate.php",
"chars": 469,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate ex"
},
{
"path": "app/Http/Middleware/EncryptCookies.php",
"chars": 294,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCook"
},
{
"path": "app/Http/Middleware/PreventRequestsDuringMaintenance.php",
"chars": 353,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance as Mid"
},
{
"path": "app/Http/Middleware/RedirectIfAuthenticated.php",
"chars": 734,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Providers\\RouteServiceProvider;\nuse Closure;\nuse Illuminate\\Http\\Request;"
},
{
"path": "app/Http/Middleware/TrimStrings.php",
"chars": 368,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimS"
},
{
"path": "app/Http/Middleware/TrustHosts.php",
"chars": 354,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Middleware\\TrustHosts as Middleware;\n\nclass TrustHosts extend"
},
{
"path": "app/Http/Middleware/TrustProxies.php",
"chars": 585,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\nuse Illuminate\\Http\\Request;\n\ncla"
},
{
"path": "app/Http/Middleware/VerifyCsrfToken.php",
"chars": 307,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass V"
},
{
"path": "app/Http/Requests/Auth/LoginRequest.php",
"chars": 2196,
"preview": "<?php\n\nnamespace App\\Http\\Requests\\Auth;\n\nuse Illuminate\\Auth\\Events\\Lockout;\nuse Illuminate\\Foundation\\Http\\FormRequest"
},
{
"path": "app/Models/Click.php",
"chars": 298,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
},
{
"path": "app/Models/Listing.php",
"chars": 544,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
},
{
"path": "app/Models/Tag.php",
"chars": 301,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
},
{
"path": "app/Models/User.php",
"chars": 787,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Contracts\\Auth\\MustVerifyEmail;\nuse Illuminate\\Database\\Eloquent\\Factories\\"
},
{
"path": "app/Providers/AppServiceProvider.php",
"chars": 403,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvid"
},
{
"path": "app/Providers/AuthServiceProvider.php",
"chars": 585,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\nuse"
},
{
"path": "app/Providers/BroadcastServiceProvider.php",
"chars": 380,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Broadcast;\nuse Illuminate\\Support\\ServiceProvider;\n\nclas"
},
{
"path": "app/Providers/EventServiceProvider.php",
"chars": 685,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Auth\\Events\\Registered;\nuse Illuminate\\Auth\\Listeners\\SendEmailVerificat"
},
{
"path": "app/Providers/RouteServiceProvider.php",
"chars": 1685,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Foundation\\Support\\Providers\\Ro"
},
{
"path": "app/View/Components/AppLayout.php",
"chars": 308,
"preview": "<?php\n\nnamespace App\\View\\Components;\n\nuse Illuminate\\View\\Component;\n\nclass AppLayout extends Component\n{\n /**\n "
},
{
"path": "app/View/Components/GuestLayout.php",
"chars": 312,
"preview": "<?php\n\nnamespace App\\View\\Components;\n\nuse Illuminate\\View\\Component;\n\nclass GuestLayout extends Component\n{\n /**\n "
},
{
"path": "artisan",
"chars": 1686,
"preview": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|-----------------------------------------------"
},
{
"path": "bootstrap/app.php",
"chars": 1620,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
},
{
"path": "bootstrap/cache/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "composer.json",
"chars": 1738,
"preview": "{\n \"name\": \"laravel/laravel\",\n \"type\": \"project\",\n \"description\": \"The Laravel Framework.\",\n \"keywords\": [\"f"
},
{
"path": "config/app.php",
"chars": 9300,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Applicatio"
},
{
"path": "config/auth.php",
"chars": 3803,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "config/broadcasting.php",
"chars": 1711,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Br"
},
{
"path": "config/cache.php",
"chars": 3274,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/cors.php",
"chars": 846,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Cross-Orig"
},
{
"path": "config/database.php",
"chars": 5054,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/filesystems.php",
"chars": 2282,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Fi"
},
{
"path": "config/hashing.php",
"chars": 1571,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ha"
},
{
"path": "config/logging.php",
"chars": 3054,
"preview": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn"
},
{
"path": "config/mail.php",
"chars": 3372,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ma"
},
{
"path": "config/queue.php",
"chars": 2906,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Qu"
},
{
"path": "config/services.php",
"chars": 950,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Third Part"
},
{
"path": "config/session.php",
"chars": 7041,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/view.php",
"chars": 1053,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | View Stora"
},
{
"path": "database/.gitignore",
"chars": 10,
"preview": "*.sqlite*\n"
},
{
"path": "database/factories/ListingFactory.php",
"chars": 1285,
"preview": "<?php\n\nnamespace Database\\Factories;\n\nuse App\\Models\\Listing;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Il"
},
{
"path": "database/factories/TagFactory.php",
"chars": 580,
"preview": "<?php\n\nnamespace Database\\Factories;\n\nuse App\\Models\\Tag;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illumi"
},
{
"path": "database/factories/UserFactory.php",
"chars": 724,
"preview": "<?php\n\nnamespace Database\\Factories;\n\nuse App\\Models\\User;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illum"
},
{
"path": "database/migrations/2014_10_12_000000_create_users_table.php",
"chars": 734,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
"chars": 683,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2019_05_03_000001_create_customer_columns.php",
"chars": 954,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2019_05_03_000002_create_subscriptions_table.php",
"chars": 1067,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2019_05_03_000003_create_subscription_items_table.php",
"chars": 945,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2019_08_19_000000_create_failed_jobs_table.php",
"chars": 820,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2021_06_16_045807_create_listings_table.php",
"chars": 1033,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2021_06_16_050029_create_clicks_table.php",
"chars": 729,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2021_06_16_050037_create_tags_table.php",
"chars": 643,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2021_06_16_050053_create_listing_tag_table.php",
"chars": 635,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/seeders/DatabaseSeeder.php",
"chars": 642,
"preview": "<?php\n\nnamespace Database\\Seeders;\n\nuse App\\Models\\Listing;\nuse App\\Models\\Tag;\nuse App\\Models\\User;\nuse Illuminate\\Data"
},
{
"path": "package.json",
"chars": 647,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"dev\": \"npm run development\",\n \"development\": \"mix\",\n \"wat"
},
{
"path": "phpunit.xml",
"chars": 1202,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:noNam"
},
{
"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/app.css",
"chars": 4010315,
"preview": "/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */\n\n/*! modern-normalize v1.1.0 | MIT License | https://g"
},
{
"path": "public/index.php",
"chars": 1735,
"preview": "<?php\n\nuse Illuminate\\Contracts\\Http\\Kernel;\nuse Illuminate\\Http\\Request;\n\ndefine('LARAVEL_START', microtime(true));\n\n/*"
},
{
"path": "public/js/app.js",
"chars": 688709,
"preview": "/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/alpinejs/dist/alpine"
},
{
"path": "public/mix-manifest.json",
"chars": 71,
"preview": "{\n \"/js/app.js\": \"/js/app.js\",\n \"/css/app.css\": \"/css/app.css\"\n}\n"
},
{
"path": "public/robots.txt",
"chars": 24,
"preview": "User-agent: *\nDisallow:\n"
},
{
"path": "public/web.config",
"chars": 1183,
"preview": "<!--\n Rewrites requires Microsoft URL Rewrite Module for IIS\n Download: https://www.iis.net/downloads/microsoft/ur"
},
{
"path": "resources/css/app.css",
"chars": 95,
"preview": "@import 'tailwindcss/base';\n@import 'tailwindcss/components';\n@import 'tailwindcss/utilities';\n"
},
{
"path": "resources/js/app.js",
"chars": 46,
"preview": "require('./bootstrap');\n\nrequire('alpinejs');\n"
},
{
"path": "resources/js/bootstrap.js",
"chars": 869,
"preview": "window._ = require('lodash');\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to o"
},
{
"path": "resources/lang/en/auth.php",
"chars": 674,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "resources/lang/en/pagination.php",
"chars": 534,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Pagination"
},
{
"path": "resources/lang/en/passwords.php",
"chars": 744,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Password R"
},
{
"path": "resources/lang/en/validation.php",
"chars": 8011,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Validation"
},
{
"path": "resources/views/auth/confirm-password.blade.php",
"chars": 1169,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/auth/forgot-password.blade.php",
"chars": 1265,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/auth/login.blade.php",
"chars": 2171,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/auth/register.blade.php",
"chars": 2099,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/auth/reset-password.blade.php",
"chars": 1692,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/auth/verify-email.blade.php",
"chars": 1452,
"preview": "<x-guest-layout>\n <x-auth-card>\n <x-slot name=\"logo\">\n <a href=\"/\">\n <x-application-"
},
{
"path": "resources/views/components/application-logo.blade.php",
"chars": 3046,
"preview": "<svg viewBox=\"0 0 316 316\" xmlns=\"http://www.w3.org/2000/svg\" {{ $attributes }}>\n <path d=\"M305.8 81.125C305.77 80.9"
},
{
"path": "resources/views/components/auth-card.blade.php",
"chars": 278,
"preview": "<div class=\"min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100\">\n <div>\n {{ $l"
},
{
"path": "resources/views/components/auth-session-status.blade.php",
"chars": 160,
"preview": "@props(['status'])\n\n@if ($status)\n <div {{ $attributes->merge(['class' => 'font-medium text-sm text-green-600']) }}>\n"
},
{
"path": "resources/views/components/auth-validation-errors.blade.php",
"chars": 397,
"preview": "@props(['errors'])\n\n@if ($errors->any())\n <div {{ $attributes }}>\n <div class=\"font-medium text-red-600\">\n "
},
{
"path": "resources/views/components/button.blade.php",
"chars": 398,
"preview": "<button {{ $attributes->merge(['type' => 'submit', 'class' => 'inline-flex items-center px-4 py-2 bg-gray-800 border bor"
},
{
"path": "resources/views/components/dropdown-link.blade.php",
"chars": 199,
"preview": "<a {{ $attributes->merge(['class' => 'block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-no"
},
{
"path": "resources/views/components/dropdown.blade.php",
"chars": 1367,
"preview": "@props(['align' => 'right', 'width' => '48', 'contentClasses' => 'py-1 bg-white'])\n\n@php\nswitch ($align) {\n case 'lef"
},
{
"path": "resources/views/components/footer.blade.php",
"chars": 2772,
"preview": "<footer class=\"text-gray-600 body-font\">\n <div class=\"container px-5 py-8 mx-auto flex items-center sm:flex-row flex-"
},
{
"path": "resources/views/components/header.blade.php",
"chars": 1359,
"preview": "<header class=\"text-gray-600 body-font border-b border-gray-100\">\n <div class=\"container mx-auto flex flex-wrap p-5 f"
},
{
"path": "resources/views/components/hero.blade.php",
"chars": 1479,
"preview": "<section class=\"text-gray-600 body-font border-b border-gray-100\">\n <div class=\"container mx-auto flex flex-col px-5 "
},
{
"path": "resources/views/components/input.blade.php",
"chars": 232,
"preview": "@props(['disabled' => false])\n\n<input {{ $disabled ? 'disabled' : '' }} {!! $attributes->merge(['class' => 'rounded-md s"
},
{
"path": "resources/views/components/label.blade.php",
"chars": 143,
"preview": "@props(['value'])\n\n<label {{ $attributes->merge(['class' => 'block font-medium text-sm text-gray-700']) }}>\n {{ $valu"
},
{
"path": "resources/views/components/nav-link.blade.php",
"chars": 605,
"preview": "@props(['active'])\n\n@php\n$classes = ($active ?? false)\n ? 'inline-flex items-center px-1 pt-1 border-b-2 bord"
},
{
"path": "resources/views/components/responsive-nav-link.blade.php",
"chars": 652,
"preview": "@props(['active'])\n\n@php\n$classes = ($active ?? false)\n ? 'block pl-3 pr-4 py-2 border-l-4 border-indigo-400 "
},
{
"path": "resources/views/dashboard.blade.php",
"chars": 2487,
"preview": "<x-app-layout>\n <section class=\"text-gray-600 body-font overflow-hidden\">\n <div class=\"container px-5 py-12 mx"
},
{
"path": "resources/views/layouts/app.blade.php",
"chars": 878,
"preview": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n <head>\n <meta charset=\"utf-8\">\n"
},
{
"path": "resources/views/layouts/guest.blade.php",
"chars": 780,
"preview": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n <head>\n <meta charset=\"utf-8\">\n"
},
{
"path": "resources/views/layouts/navigation.blade.php",
"chars": 4694,
"preview": "<nav x-data=\"{ open: false }\" class=\"bg-white border-b border-gray-100\">\n <!-- Primary Navigation Menu -->\n <div c"
},
{
"path": "resources/views/listings/create.blade.php",
"chars": 8143,
"preview": "<x-app-layout>\n <section class=\"text-gray-600 body-font overflow-hidden\">\n <div class=\"w-full md:w-1/2 py-24 m"
},
{
"path": "resources/views/listings/index.blade.php",
"chars": 2689,
"preview": "<x-app-layout>\n <x-hero></x-hero>\n <section class=\"container px-5 py-12 mx-auto\">\n <div class=\"mb-12\">\n "
},
{
"path": "resources/views/listings/show.blade.php",
"chars": 1888,
"preview": "<x-app-layout>\n <section class=\"text-gray-600 body-font overflow-hidden\">\n <div class=\"container px-5 py-24 mx"
},
{
"path": "resources/views/welcome.blade.php",
"chars": 18237,
"preview": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n <head>\n <meta charset=\"utf-8\">\n"
},
{
"path": "routes/api.php",
"chars": 566,
"preview": "<?php\n\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Route;\n\n/*\n|-----------------------------------------"
},
{
"path": "routes/auth.php",
"chars": 1848,
"preview": "<?php\n\nuse App\\Http\\Controllers\\Auth\\AuthenticatedSessionController;\nuse App\\Http\\Controllers\\Auth\\ConfirmablePasswordCo"
},
{
"path": "routes/channels.php",
"chars": 558,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Broadcast;\n\n/*\n|------------------------------------------------------------------"
},
{
"path": "routes/console.php",
"chars": 592,
"preview": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\nuse Illuminate\\Support\\Facades\\Artisan;\n\n/*\n|-------------------------------"
},
{
"path": "routes/web.php",
"chars": 818,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse App\\Http\\Controllers;\n\nRoute::get('/', [Controllers\\ListingController::"
},
{
"path": "server.php",
"chars": 563,
"preview": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package Laravel\n * @author Taylor Otwell <taylor@lara"
},
{
"path": "storage/app/.gitignore",
"chars": 23,
"preview": "*\n!public/\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": "tailwind.config.js",
"chars": 573,
"preview": "const defaultTheme = require('tailwindcss/defaultTheme');\n\nmodule.exports = {\n purge: [\n './vendor/laravel/fra"
},
{
"path": "tests/CreatesApplication.php",
"chars": 380,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\n\ntrait CreatesApplication\n{\n /**\n * Creates the"
},
{
"path": "tests/Feature/AuthenticationTest.php",
"chars": 1039,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse App\\Models\\User;\nuse App\\Providers\\RouteServiceProvider;\nuse Illuminate\\Foundation\\"
},
{
"path": "tests/Feature/EmailVerificationTest.php",
"chars": 1767,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse App\\Models\\User;\nuse App\\Providers\\RouteServiceProvider;\nuse Illuminate\\Auth\\Events"
},
{
"path": "tests/Feature/ExampleTest.php",
"chars": 339,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass ExampleTe"
},
{
"path": "tests/Feature/PasswordConfirmationTest.php",
"chars": 1059,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse App\\Models\\User;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestC"
},
{
"path": "tests/Feature/PasswordResetTest.php",
"chars": 1897,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse App\\Models\\User;\nuse Illuminate\\Auth\\Notifications\\ResetPassword;\nuse Illuminate\\Fo"
},
{
"path": "tests/Feature/RegistrationTest.php",
"chars": 765,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse App\\Providers\\RouteServiceProvider;\nuse Illuminate\\Foundation\\Testing\\RefreshDataba"
},
{
"path": "tests/TestCase.php",
"chars": 163,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends Ba"
},
{
"path": "tests/Unit/ExampleTest.php",
"chars": 254,
"preview": "<?php\n\nnamespace Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n /**\n * A bas"
},
{
"path": "webpack.mix.js",
"chars": 627,
"preview": "const mix = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | "
}
]
About this extraction
This page contains the full source code of the aschmelyun/laravel-job-board GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 136 files (4.7 MB), approximately 1.2M tokens, and a symbol index with 777 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.