diff --git a/.htaccess b/.htaccess
new file mode 100644
index 000000000000..886d649923e3
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,146 @@
+
+ RewriteEngine On
+ RewriteRule "^.env" - [F,L]
+ RewriteRule "^storage" - [F,L]
+ RewriteRule ^(.well-known)($|/) - [L]
+
+ RewriteRule ^(.*)$ public/$1 [L]
+
+
+# https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess
+
+
+# ######################################################################
+# # INTERNET EXPLORER #
+# ######################################################################
+
+# ----------------------------------------------------------------------
+# | Iframes cookies |
+# ----------------------------------------------------------------------
+
+# Allow cookies to be set from iframes in Internet Explorer.
+#
+# https://msdn.microsoft.com/en-us/library/ms537343.aspx
+# http://www.w3.org/TR/2000/CR-P3P-20001215/
+
+
+ Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
+
+
+
+# ######################################################################
+# # MEDIA TYPES AND CHARACTER ENCODINGS #
+# ######################################################################
+
+# ----------------------------------------------------------------------
+# | Character encodings |
+# ----------------------------------------------------------------------
+
+# Serve all resources labeled as `text/html` or `text/plain`
+# with the media type `charset` parameter set to `UTF-8`.
+#
+# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
+
+AddDefaultCharset utf-8
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Serve the following file types with the media type `charset`
+# parameter set to `UTF-8`.
+#
+# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset
+
+
+ AddCharset utf-8 .atom \
+ .bbaw \
+ .css \
+ .geojson \
+ .js \
+ .json \
+ .jsonld \
+ .manifest \
+ .rdf \
+ .rss \
+ .topojson \
+ .vtt \
+ .webapp \
+ .webmanifest \
+ .xloc \
+ .xml
+
+
+
+# ######################################################################
+# # WEB PERFORMANCE #
+# ######################################################################
+
+# ----------------------------------------------------------------------
+# | Compression |
+# ----------------------------------------------------------------------
+
+
+
+ # Force compression for mangled headers.
+ # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
+
+
+
+ SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
+ RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
+
+
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Map certain file types to the specified encoding type in order to
+ # make Apache serve them with the appropriate `Content-Encoding` HTTP
+ # response header (this will NOT make Apache compress them!).
+
+ # If the following file types wouldn't be served without the appropriate
+ # `Content-Enable` HTTP response header, client applications (e.g.:
+ # browsers) wouldn't know that they first need to uncompress the response,
+ # and thus, wouldn't be able to understand the content.
+
+ # http://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
+
+
+ AddEncoding gzip svgz
+
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Compress all output labeled with one of the following media types.
+
+ # IMPORTANT: For Apache versions below 2.3.7 you don't need to enable
+ # `mod_filter` and can remove the `` & ``
+ # lines as `AddOutputFilterByType` is still in the core directives.
+
+
+ AddOutputFilterByType DEFLATE "application/atom+xml" \
+ "application/javascript" \
+ "application/json" \
+ "application/ld+json" \
+ "application/manifest+json" \
+ "application/rdf+xml" \
+ "application/rss+xml" \
+ "application/schema+json" \
+ "application/vnd.geo+json" \
+ "application/vnd.ms-fontobject" \
+ "application/x-font-ttf" \
+ "application/x-web-app-manifest+json" \
+ "application/xhtml+xml" \
+ "application/xml" \
+ "font/opentype" \
+ "image/svg+xml" \
+ "image/x-icon" \
+ "text/cache-manifest" \
+ "text/css" \
+ "text/html" \
+ "text/javascript" \
+ "text/plain" \
+ "text/vtt" \
+ "text/x-component" \
+ "text/xml"
+
+
+
diff --git a/app/Events/Design/DesignWasArchived.php b/app/Events/Design/DesignWasArchived.php
new file mode 100644
index 000000000000..c41303db150d
--- /dev/null
+++ b/app/Events/Design/DesignWasArchived.php
@@ -0,0 +1,54 @@
+design = $design;
+ }
+
+ /**
+ * Get the channels the event should broadcast on.
+ *
+ * @return \Illuminate\Broadcasting\Channel|array
+ */
+ public function broadcastOn()
+ {
+ return new PrivateChannel('channel-name');
+ }
+}
diff --git a/app/Events/Design/DesignWasCreated.php b/app/Events/Design/DesignWasCreated.php
new file mode 100644
index 000000000000..b44e8fcd90a2
--- /dev/null
+++ b/app/Events/Design/DesignWasCreated.php
@@ -0,0 +1,48 @@
+design = $design;
+ }
+
+ /**
+ * Get the channels the event should broadcast on.
+ *
+ * @return \Illuminate\Broadcasting\Channel|array
+ */
+ public function broadcastOn()
+ {
+ return new PrivateChannel('channel-name');
+ }
+}
diff --git a/app/Events/Design/DesignWasDeleted.php b/app/Events/Design/DesignWasDeleted.php
new file mode 100644
index 000000000000..653a40f47836
--- /dev/null
+++ b/app/Events/Design/DesignWasDeleted.php
@@ -0,0 +1,49 @@
+design = $design;
+ }
+
+ /**
+ * Get the channels the event should broadcast on.
+ *
+ * @return \Illuminate\Broadcasting\Channel|array
+ */
+ public function broadcastOn()
+ {
+ return new PrivateChannel('channel-name');
+ }
+}
+}
diff --git a/app/Events/Design/DesignWasRestored.php b/app/Events/Design/DesignWasRestored.php
new file mode 100644
index 000000000000..1b71ecf93233
--- /dev/null
+++ b/app/Events/Design/DesignWasRestored.php
@@ -0,0 +1,48 @@
+design = $design;
+ }
+
+ /**
+ * Get the channels the event should broadcast on.
+ *
+ * @return \Illuminate\Broadcasting\Channel|array
+ */
+ public function broadcastOn()
+ {
+ return new PrivateChannel('channel-name');
+ }
+}
diff --git a/app/Events/Design/DesignWasUpdated.php b/app/Events/Design/DesignWasUpdated.php
new file mode 100644
index 000000000000..f90d8c76b4e3
--- /dev/null
+++ b/app/Events/Design/DesignWasUpdated.php
@@ -0,0 +1,49 @@
+design = $design;
+ }
+
+ /**
+ * Get the channels the event should broadcast on.
+ *
+ * @return \Illuminate\Broadcasting\Channel|array
+ */
+ public function broadcastOn()
+ {
+ return new PrivateChannel('channel-name');
+ }
+}
+}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index 25b9ab51b118..7a9425d72010 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -57,25 +57,29 @@ class Handler extends ExceptionHandler
*/
public function report(Exception $exception)
{
- if(!Schema::hasTable('accounts'))
+ if(!Schema::hasTable('accounts')){
+ info("account table not found");
return;
+ }
if (app()->bound('sentry') && $this->shouldReport($exception)) {
- app('sentry')->configureScope(function (Scope $scope): void {
- if (auth()->guard('contact') && auth()->guard('contact')->user() && auth()->guard('contact')->user()->company->account->report_errors) {
- $scope->setUser([
- 'id' => auth()->guard('contact')->user()->company->account->key,
- 'email' => "anonymous@example.com",
- 'name' => "Anonymous User",
- ]);
- } elseif (auth()->guard('user')->user() && auth()->user()->company() && auth()->user()->company()->account->report_errors) {
- $scope->setUser([
- 'id' => auth()->user()->account->key,
- 'email' => "anonymous@example.com",
- 'name' => "Anonymous User",
- ]);
- }
- });
+
+ // app('sentry')->configureScope(function (Scope $scope): void {
+
+ // if (auth()->guard('contact') && auth()->guard('contact')->user() && auth()->guard('contact')->user()->company->account->report_errors) {
+ // $scope->setUser([
+ // 'id' => auth()->guard('contact')->user()->company->account->key,
+ // 'email' => "anonymous@example.com",
+ // 'name' => "Anonymous User",
+ // ]);
+ // } elseif (auth()->guard('user') && auth()->guard('user')->user() && auth()->user()->company() && auth()->user()->company()->account->report_errors) {
+ // $scope->setUser([
+ // 'id' => auth()->user()->account->key,
+ // 'email' => "anonymous@example.com",
+ // 'name' => "Anonymous User",
+ // ]);
+ // }
+ // });
app('sentry')->captureException($exception);
}
diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php
index 91190bb2db15..cac67e2c27dd 100644
--- a/app/Http/Controllers/AccountController.php
+++ b/app/Http/Controllers/AccountController.php
@@ -125,7 +125,7 @@ class AccountController extends BaseController
* @OA\Response(
* response=200,
* description="The Company User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyUser"),
diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php
index 0a23c3bdfaaf..f008681254b7 100644
--- a/app/Http/Controllers/ActivityController.php
+++ b/app/Http/Controllers/ActivityController.php
@@ -52,7 +52,7 @@ class ActivityController extends BaseController
* @OA\Response(
* response=200,
* description="A list of actvities",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Activity"),
diff --git a/app/Http/Controllers/Auth/ContactLoginController.php b/app/Http/Controllers/Auth/ContactLoginController.php
index 43a4bde989df..c292b87aeffa 100644
--- a/app/Http/Controllers/Auth/ContactLoginController.php
+++ b/app/Http/Controllers/Auth/ContactLoginController.php
@@ -11,6 +11,7 @@
namespace App\Http\Controllers\Auth;
+use App\Events\Contact\ContactLoggedIn;
use App\Http\Controllers\Controller;
use App\Models\ClientContact;
use Auth;
@@ -62,6 +63,8 @@ class ContactLoginController extends Controller
{
Auth::guard('contact')->login($client, true);
+ event(new ContactLoggedIn($client));
+
if (session()->get('url.intended')) {
return redirect(session()->get('url.intended'));
}
diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php
index 9374f6a46ec3..7b4f9ad17462 100644
--- a/app/Http/Controllers/Auth/ForgotPasswordController.php
+++ b/app/Http/Controllers/Auth/ForgotPasswordController.php
@@ -71,7 +71,7 @@ class ForgotPasswordController extends Controller
* @OA\Response(
* response=201,
* description="The Reset response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index e42f036ae0fa..5dd43a5ace30 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -136,7 +136,7 @@ class LoginController extends BaseController
* @OA\Response(
* response=200,
* description="The Company User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyUser"),
@@ -168,7 +168,7 @@ class LoginController extends BaseController
return response()
->json(['message' => 'Too many login attempts, you are being throttled'], 401)
->header('X-App-Version', config('ninja.app_version'))
- ->header('X-Api-Version', config('ninja.api_version'));
+ ->header('X-Api-Version', config('ninja.minimum_client_version'));
}
if ($this->attemptLogin($request)) {
@@ -196,7 +196,7 @@ class LoginController extends BaseController
return response()
->json(['message' => ctrans('texts.invalid_credentials')], 401)
->header('X-App-Version', config('ninja.app_version'))
- ->header('X-Api-Version', config('ninja.api_version'));
+ ->header('X-Api-Version', config('ninja.minimum_client_version'));
}
}
@@ -221,7 +221,7 @@ class LoginController extends BaseController
* @OA\Response(
* response=200,
* description="The Company User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyUser"),
@@ -267,7 +267,7 @@ class LoginController extends BaseController
return response()
->json(['message' => 'Provider not supported'], 400)
->header('X-App-Version', config('ninja.app_version'))
- ->header('X-Api-Version', config('ninja.api_version'));
+ ->header('X-Api-Version', config('ninja.minimum_client_version'));
}
private function handleGoogleOauth()
@@ -344,7 +344,7 @@ class LoginController extends BaseController
return response()
->json(['message' => ctrans('texts.invalid_credentials')], 401)
->header('X-App-Version', config('ninja.app_version'))
- ->header('X-Api-Version', config('ninja.api_version'));
+ ->header('X-Api-Version', config('ninja.minimum_client_version'));
}
diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php
index 39699f662f26..f1b2af101f40 100644
--- a/app/Http/Controllers/BaseController.php
+++ b/app/Http/Controllers/BaseController.php
@@ -100,7 +100,7 @@ class BaseController extends Controller
public function notFound()
{
return response()->json(['message' => '404 | Nothing to see here!'], 404)
- ->header('X-API-VERSION', config('ninja.api_version'))
+ ->header('X-API-VERSION', config('ninja.minimum_client_version'))
->header('X-APP-VERSION', config('ninja.app_version'));
}
@@ -240,7 +240,7 @@ class BaseController extends Controller
{
return [
'Content-Type' => 'application/json',
- 'X-Api-Version' => config('ninja.api_version'),
+ 'X-Api-Version' => config('ninja.minimum_client_version'),
'X-App-Version' => config('ninja.app_version'),
];
}
diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php
index d9f8c43b04dc..1edba051e169 100644
--- a/app/Http/Controllers/ClientController.php
+++ b/app/Http/Controllers/ClientController.php
@@ -89,7 +89,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="A list of clients",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -146,7 +146,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the cl.ient object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -201,7 +201,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -258,7 +258,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -310,7 +310,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="A blank client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -357,7 +357,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
@@ -418,7 +418,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -479,7 +479,7 @@ class ClientController extends BaseController
* @OA\Response(
* response=200,
* description="The Client User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Client"),
diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php
index 19c68657414b..0877a2769736 100644
--- a/app/Http/Controllers/CompanyController.php
+++ b/app/Http/Controllers/CompanyController.php
@@ -89,7 +89,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="A list of companies",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -135,7 +135,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="A blank company object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -181,7 +181,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved company object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -274,7 +274,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the company object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -329,7 +329,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the company object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -385,7 +385,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the company object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Company"),
@@ -446,7 +446,7 @@ class CompanyController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -466,9 +466,13 @@ class CompanyController extends BaseController
*/
public function destroy(DestroyCompanyRequest $request, Company $company)
{
+ info(print_r($request->all()));
+ info("destroying {$company->present()->name()} - {$company->hashed_id}");
$company_count = $company->account->companies->count();
$account = $company->account;
+
+ info("company count = {$company_count}");
if ($company_count == 1) {
diff --git a/app/Http/Controllers/CompanyGatewayController.php b/app/Http/Controllers/CompanyGatewayController.php
index bdd89008d676..58a4d5bd33c7 100644
--- a/app/Http/Controllers/CompanyGatewayController.php
+++ b/app/Http/Controllers/CompanyGatewayController.php
@@ -74,7 +74,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="A list of company_gateways",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -120,7 +120,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="A blank CompanyGateway object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -167,7 +167,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved CompanyGateway object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -226,7 +226,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the CompanyGateway object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -281,7 +281,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the CompanyGateway object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -337,7 +337,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the CompanyGateway object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
@@ -400,7 +400,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -460,7 +460,7 @@ class CompanyGatewayController extends BaseController
* @OA\Response(
* response=200,
* description="The Company Gateways response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyGateway"),
diff --git a/app/Http/Controllers/CompanyLedgerController.php b/app/Http/Controllers/CompanyLedgerController.php
index c09ae7b022a3..faecd4d0fc48 100644
--- a/app/Http/Controllers/CompanyLedgerController.php
+++ b/app/Http/Controllers/CompanyLedgerController.php
@@ -46,7 +46,7 @@ class CompanyLedgerController extends BaseController
* @OA\Response(
* response=200,
* description="A list of company_ledger",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyLedger"),
diff --git a/app/Http/Controllers/CompanyUserController.php b/app/Http/Controllers/CompanyUserController.php
index 990b07a34f39..572e6bb541b8 100644
--- a/app/Http/Controllers/CompanyUserController.php
+++ b/app/Http/Controllers/CompanyUserController.php
@@ -105,7 +105,7 @@ class CompanyUserController extends BaseController
* @OA\Response(
* response=200,
* description="The Company User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/CompanyUser"),
diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php
index 2341ffca289c..8b56a5685c2f 100644
--- a/app/Http/Controllers/CreditController.php
+++ b/app/Http/Controllers/CreditController.php
@@ -69,7 +69,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="A list of credits",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Credit"),
@@ -117,7 +117,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="A blank credit object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Credit"),
@@ -164,7 +164,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved credit object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Credit"),
@@ -229,7 +229,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the credit object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Credit"),
@@ -285,7 +285,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the credit object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -342,7 +342,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the Credit object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Credit"),
@@ -406,7 +406,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -464,7 +464,7 @@ class CreditController extends BaseController
* @OA\Response(
* response=200,
* description="The Bulk Action response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
diff --git a/app/Http/Controllers/DesignController.php b/app/Http/Controllers/DesignController.php
index 388ce1d375af..088dcd277eed 100644
--- a/app/Http/Controllers/DesignController.php
+++ b/app/Http/Controllers/DesignController.php
@@ -21,6 +21,7 @@ use App\Http\Requests\Design\StoreDesignRequest;
use App\Http\Requests\Design\UpdateDesignRequest;
use App\Jobs\Entity\ActionEntity;
use App\Models\Design;
+use App\Repositories\DesignRepository;
use App\Transformers\DesignTransformer;
use App\Utils\Traits\BulkOptions;
use App\Utils\Traits\MakesHash;
@@ -40,14 +41,17 @@ class DesignController extends BaseController
protected $entity_transformer = DesignTransformer::class;
+ protected $design_repo;
/**
* DesignController constructor.
* @param DesignRepository $designRepo
*/
- public function __construct()
+ public function __construct(DesignRepository $design_repo)
{
parent::__construct();
+
+ $this->design_repo = $design_repo;
}
/**
@@ -65,7 +69,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="A list of designs",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -122,7 +126,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the expense object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -177,7 +181,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the design object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -234,7 +238,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the design object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -285,7 +289,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="A blank design object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -332,7 +336,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved design object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -391,7 +395,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -454,7 +458,7 @@ class DesignController extends BaseController
* @OA\Response(
* response=200,
* description="The Design User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Design"),
@@ -478,9 +482,14 @@ class DesignController extends BaseController
$ids = request()->input('ids');
$designs = Design::withTrashed()->find($this->transformKeys($ids));
+ info($designs);
+ info(auth()->user()->id);
+ info(auth()->user()->getCompany()->id);
+
$designs->each(function ($design, $key) use ($action) {
if (auth()->user()->can('edit', $design)) {
- //$this->design_repo->{$action}($design);@todo
+ info("authed");
+ $this->design_repo->{$action}($design);
}
});
diff --git a/app/Http/Controllers/EmailController.php b/app/Http/Controllers/EmailController.php
index c40b2a4804c1..62760c5acce3 100644
--- a/app/Http/Controllers/EmailController.php
+++ b/app/Http/Controllers/EmailController.php
@@ -88,7 +88,7 @@ class EmailController extends BaseController
* @OA\Response(
* response=200,
* description="success",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Template"),
diff --git a/app/Http/Controllers/ExpenseController.php b/app/Http/Controllers/ExpenseController.php
index fa4e2fd6cd83..487b15fe86d5 100644
--- a/app/Http/Controllers/ExpenseController.php
+++ b/app/Http/Controllers/ExpenseController.php
@@ -77,7 +77,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="A list of expenses",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -134,7 +134,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the expense object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -189,7 +189,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -246,7 +246,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -298,7 +298,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="A blank client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -345,7 +345,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved client object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
@@ -406,7 +406,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -467,7 +467,7 @@ class ExpenseController extends BaseController
* @OA\Response(
* response=200,
* description="The Expense User response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Expense"),
diff --git a/app/Http/Controllers/GroupSettingController.php b/app/Http/Controllers/GroupSettingController.php
index c0fab0ad4ba6..4dcf7923e0e5 100644
--- a/app/Http/Controllers/GroupSettingController.php
+++ b/app/Http/Controllers/GroupSettingController.php
@@ -64,7 +64,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="A list of group_settings",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -110,7 +110,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="A blank GroupSetting object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -157,7 +157,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved GroupSetting object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -221,7 +221,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the GroupSetting object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -276,7 +276,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the GroupSetting object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -332,7 +332,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the GroupSetting object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/GroupSetting"),
@@ -391,7 +391,7 @@ class GroupSettingController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php
index e0e95cbc19f2..48251ead318d 100644
--- a/app/Http/Controllers/InvoiceController.php
+++ b/app/Http/Controllers/InvoiceController.php
@@ -94,7 +94,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="A list of invoices",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -141,7 +141,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="A blank invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -188,7 +188,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the saved invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -251,7 +251,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -307,7 +307,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -364,7 +364,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -428,7 +428,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns a HTTP status",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -486,7 +486,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="The Bulk Action response",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -599,7 +599,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the invoice object",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* @OA\JsonContent(ref="#/components/schemas/Invoice"),
@@ -701,7 +701,7 @@ class InvoiceController extends BaseController
}
break;
case 'email':
-
+ //check query paramater for email_type and set the template else use calculateTemplate
$this->reminder_template = $invoice->calculateTemplate();
$invoice->invitations->load('contact.client.country','invoice.client.country','invoice.company')->each(function ($invitation) use ($invoice) {
@@ -753,7 +753,7 @@ class InvoiceController extends BaseController
* @OA\Response(
* response=200,
* description="Returns the invoice pdf",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
diff --git a/app/Http/Controllers/LicenseController.php b/app/Http/Controllers/LicenseController.php
index 537f141f1cff..7c80e8faad7c 100644
--- a/app/Http/Controllers/LicenseController.php
+++ b/app/Http/Controllers/LicenseController.php
@@ -62,7 +62,7 @@ class LicenseController extends BaseController
* @OA\Response(
* response=200,
* description="Success!",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php
index 07fc187fd3cf..59c7db415a5a 100644
--- a/app/Http/Controllers/MigrationController.php
+++ b/app/Http/Controllers/MigrationController.php
@@ -59,7 +59,7 @@ class MigrationController extends BaseController
* @OA\Response(
* response=200,
* description="Success",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -122,7 +122,7 @@ class MigrationController extends BaseController
* @OA\Response(
* response=200,
* description="Success",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
@@ -174,7 +174,7 @@ class MigrationController extends BaseController
* @OA\Response(
* response=200,
* description="Success",
- * @OA\Header(header="X-API-Version", ref="#/components/headers/X-API-Version"),
+ * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"),
* @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"),
* @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"),
* ),
diff --git a/app/Http/Controllers/OpenAPI/Headers.php b/app/Http/Controllers/OpenAPI/Headers.php
index 549c3f0fce24..b9aef8924c2d 100644
--- a/app/Http/Controllers/OpenAPI/Headers.php
+++ b/app/Http/Controllers/OpenAPI/Headers.php
@@ -1,7 +1,7 @@
json($error, 403)
->header('X-App-Version', config('ninja.app_version'))
- ->header('X-Api-Version', config('ninja.api_version'));
+ ->header('X-Minimum-Client-Version', config('ninja.minimum_client_version'));
}
}
}
diff --git a/app/Http/Middleware/Cors.php b/app/Http/Middleware/Cors.php
index f1ca85bf62f7..210a45855106 100644
--- a/app/Http/Middleware/Cors.php
+++ b/app/Http/Middleware/Cors.php
@@ -39,7 +39,7 @@ class Cors
$response->headers->set('Access-Control-Allow-Headers', 'X-API-SECRET,X-API-TOKEN,X-API-PASSWORD,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range');
$response->headers->set('Access-Control-Expose-Headers', 'X-APP-VERSION');
$response->headers->set('X-APP-VERSION', config('ninja.app_version'));
- $response->headers->set('X-API-VERSION', config('ninja.api_version'));
+ $response->headers->set('X-MINIMUM-CLIENT-VERSION', config('ninja.minimum_client_version'));
return $response;
}
diff --git a/app/Http/Middleware/StartupCheck.php b/app/Http/Middleware/StartupCheck.php
index d8abfe9ca4a4..84a0e1f37cb1 100644
--- a/app/Http/Middleware/StartupCheck.php
+++ b/app/Http/Middleware/StartupCheck.php
@@ -45,8 +45,6 @@ class StartupCheck
Session::flash('message', 'Cache cleared');
}
-
-
/* Make sure our cache is built */
$cached_tables = config('ninja.cached_tables');
diff --git a/app/Http/Requests/Payment/StorePaymentRequest.php b/app/Http/Requests/Payment/StorePaymentRequest.php
index e553cfba30d3..a46f5c68f802 100644
--- a/app/Http/Requests/Payment/StorePaymentRequest.php
+++ b/app/Http/Requests/Payment/StorePaymentRequest.php
@@ -76,6 +76,8 @@ class StorePaymentRequest extends Request
$input['is_manual'] = true;
+ info(print_r($input,1));
+
$this->replace($input);
}
diff --git a/app/Http/Requests/Payment/UpdatePaymentRequest.php b/app/Http/Requests/Payment/UpdatePaymentRequest.php
index e5cb40f81b4f..7abe8aeebd65 100644
--- a/app/Http/Requests/Payment/UpdatePaymentRequest.php
+++ b/app/Http/Requests/Payment/UpdatePaymentRequest.php
@@ -35,9 +35,9 @@ class UpdatePaymentRequest extends Request
public function rules()
- {//min:1 removed
+ {//min:1 removed, 'required'
return [
- 'invoices' => ['required','array',new PaymentAppliedValidAmount,new ValidCreditsPresentRule],
+ 'invoices' => ['array',new PaymentAppliedValidAmount,new ValidCreditsPresentRule],
'invoices.*.invoice_id' => 'distinct',
'documents' => 'mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx',
];
diff --git a/app/Listeners/Contact/UpdateContactLastLogin.php b/app/Listeners/Contact/UpdateContactLastLogin.php
index a1fb9c14a8e7..66cd422b9bc5 100644
--- a/app/Listeners/Contact/UpdateContactLastLogin.php
+++ b/app/Listeners/Contact/UpdateContactLastLogin.php
@@ -38,6 +38,8 @@ class UpdateContactLastLogin implements ShouldQueue
$client_contact = $event->client_contact;
$client_contact->last_login = now();
+ $client_contact->client->last_login = now();
+
$client_contact->save();
}
}
diff --git a/app/Models/Client.php b/app/Models/Client.php
index 4676bebf0fe8..79457ea7d864 100644
--- a/app/Models/Client.php
+++ b/app/Models/Client.php
@@ -64,6 +64,7 @@ class Client extends BaseModel implements HasLocalePreference
];
protected $fillable = [
+ 'assigned_user_id',
'currency_id',
'name',
'website',
@@ -120,7 +121,7 @@ class Client extends BaseModel implements HasLocalePreference
public function ledger()
{
- return $this->hasMany(CompanyLedger::class);
+ return $this->hasMany(CompanyLedger::class)->orderBy('id', 'desc');
}
public function gateway_tokens()
@@ -149,7 +150,7 @@ class Client extends BaseModel implements HasLocalePreference
public function activities()
{
- return $this->hasMany(Activity::class);
+ return $this->hasMany(Activity::class)->orderBy('id', 'desc');
}
public function contacts()
diff --git a/app/Models/Credit.php b/app/Models/Credit.php
index abb776c12e1d..c82292a24b59 100644
--- a/app/Models/Credit.php
+++ b/app/Models/Credit.php
@@ -38,6 +38,7 @@ class Credit extends BaseModel
protected $presenter = 'App\Models\Presenters\CreditPresenter';
protected $fillable = [
+ 'assigned_user_id',
'number',
'discount',
'po_number',
diff --git a/app/Models/Quote.php b/app/Models/Quote.php
index 362829eefede..debd2e8058bb 100644
--- a/app/Models/Quote.php
+++ b/app/Models/Quote.php
@@ -42,6 +42,7 @@ class Quote extends BaseModel
protected $presenter = 'App\Models\Presenters\QuotePresenter';
protected $fillable = [
+ 'assigned_user_id',
'number',
'discount',
'po_number',
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 85bc5e3ec942..f2b657e4ea42 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -11,10 +11,18 @@
namespace App\Providers;
+use App\Events\Client\ClientWasArchived;
use App\Events\Client\ClientWasCreated;
+use App\Events\Client\ClientWasDeleted;
+use App\Events\Client\ClientWasRestored;
+use App\Events\Client\ClientWasUpdated;
+use App\Events\Client\DesignWasDeleted;
+use App\Events\Client\DesignWasRestored;
+use App\Events\Client\DesignWasUpdated;
use App\Events\Company\CompanyWasDeleted;
use App\Events\Contact\ContactLoggedIn;
use App\Events\Credit\CreditWasMarkedSent;
+use App\Events\Design\DesignWasArchived;
use App\Events\Invoice\InvoiceWasCancelled;
use App\Events\Invoice\InvoiceWasCreated;
use App\Events\Invoice\InvoiceWasDeleted;
@@ -78,11 +86,6 @@ class EventServiceProvider extends ServiceProvider
ContactLoggedIn::class => [
UpdateContactLastLogin::class,
],
- // Clients
- ClientWasCreated::class => [
- CreatedClientActivity::class,
- // 'App\Listeners\SubscriptionListener@createdClient',
- ],
PaymentWasCreated::class => [
PaymentCreatedActivity::class,
PaymentNotification::class,
@@ -96,24 +99,29 @@ class EventServiceProvider extends ServiceProvider
PaymentWasVoided::class => [
PaymentVoidedActivity::class,
],
- 'App\Events\ClientWasArchived' => [
- 'App\Listeners\ActivityListener@archivedClient',
+ // Clients
+ ClientWasCreated::class =>[
+ CreatedClientActivity::class,
],
- 'App\Events\ClientWasUpdated' => [
- 'App\Listeners\SubscriptionListener@updatedClient',
+ ClientWasArchived::class =>[
],
- 'App\Events\ClientWasDeleted' => [
- 'App\Listeners\ActivityListener@deletedClient',
- 'App\Listeners\SubscriptionListener@deletedClient',
- 'App\Listeners\HistoryListener@deletedClient',
+ ClientWasUpdated::class =>[
],
- 'App\Events\ClientWasRestored' => [
- 'App\Listeners\ActivityListener@restoredClient',
+ ClientWasDeleted::class =>[
+ ],
+ ClientWasRestored::class =>[
],
-
CreditWasMarkedSent::class => [
],
-
+ //Designs
+ DesignWasArchived::class => [
+ ],
+ DesignWasUpdated::class => [
+ ],
+ DesignWasDeleted::class => [
+ ],
+ DesignWasRestored::class => [
+ ],
//Invoices
InvoiceWasMarkedSent::class => [
CreateInvoiceHtmlBackup::class,
diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php
index 277b15a6b984..a3cc6e5ed1ce 100644
--- a/app/Repositories/BaseRepository.php
+++ b/app/Repositories/BaseRepository.php
@@ -73,6 +73,8 @@ class BaseRepository
$entity->delete();
+ info("archived");
+
$className = $this->getEventClass($entity, 'Archived');
if (class_exists($className)) {
@@ -203,13 +205,14 @@ class BaseRepository
$lcfirst_resource_id = lcfirst($resource) . '_id';
if ($class->name == Invoice::class || $class->name == Quote::class) {
+ info("class name = invoice");
$state['starting_amount'] = $model->amount;
+ info("starting amount = {$model->amount}");
}
if (!$model->id) {
$company_defaults = $client->setCompanyDefaults($data, lcfirst($resource));
$model->uses_inclusive_taxes = $client->getSetting('inclusive_taxes');
-
$data = array_merge($company_defaults, $data);
}
@@ -281,7 +284,10 @@ class BaseRepository
$model->service()->createInvitations();
}
+ $model = $model->calc()->getInvoice();
$state['finished_amount'] = $model->amount;
+
+ info("finished amount = {$model->amount}");
$model = $model->service()->applyNumber()->save();
@@ -291,11 +297,11 @@ class BaseRepository
if ($class->name == Invoice::class) {
if (($state['finished_amount'] != $state['starting_amount']) && ($model->status_id != Invoice::STATUS_DRAFT)) {
+ info("inside ledger updating");
$model->ledger()->updateInvoiceBalance(($state['finished_amount'] - $state['starting_amount']));
+ $model->client->service()->updateBalance(($state['finished_amount'] - $state['starting_amount']))->save();
}
- $model = $model->calc()->getInvoice();
-
event(new InvoiceWasUpdated($model, $model->company));
}
diff --git a/app/Repositories/DesignRepository.php b/app/Repositories/DesignRepository.php
new file mode 100644
index 000000000000..9e9070aa866f
--- /dev/null
+++ b/app/Repositories/DesignRepository.php
@@ -0,0 +1,40 @@
+ env('APP_URL', ''),
'app_domain' => env('APP_DOMAIN', ''),
'app_version' => '5.0.4',
- 'api_version' => '5.0.4',
+ 'minimum_client_version' => '5.0.4',
'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''),
'google_maps_api_key' => env('GOOGLE_MAPS_API_KEY'),
diff --git a/database/migrations/2014_10_13_000000_create_users_table.php b/database/migrations/2014_10_13_000000_create_users_table.php
index 7ec7235b8fe3..2f8011779281 100644
--- a/database/migrations/2014_10_13_000000_create_users_table.php
+++ b/database/migrations/2014_10_13_000000_create_users_table.php
@@ -156,7 +156,7 @@ class CreateUsersTable extends Migration
$table->boolean('custom_surcharge_taxes4')->default(false);
//$table->boolean('enable_invoice_quantity')->default(true);
$table->boolean('show_product_cost')->default(false);
- $table->unsignedInteger('enabled_tax_rates')->default(1);
+ $table->unsignedInteger('enabled_tax_rates')->default(0);
$table->unsignedInteger('enabled_modules')->default(0);
$table->boolean('enable_product_cost')->default(0);
diff --git a/public/assets/NOTICES b/public/assets/NOTICES
index 69d4cbb13e11..d3422c047598 100644
--- a/public/assets/NOTICES
+++ b/public/assets/NOTICES
@@ -325,6 +325,79 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
angle
+Copyright (C) 2009 Apple Inc. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright (C) 2012 Apple Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright (c) 2008 NVIDIA, Corporation
+
+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 (including the next
+paragraph) 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.
+--------------------------------------------------------------------------------
+angle
+
Copyright (c) 2008-2018 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
@@ -348,6 +421,93 @@ MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
--------------------------------------------------------------------------------
angle
+Copyright (c) 2010 NVIDIA, Corporation
+
+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 (including the next
+paragraph) 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.
+--------------------------------------------------------------------------------
+angle
+
+Copyright (c) 2013 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright (c) 2019 The ANGLE Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+ Ltd., nor the names of their contributors may be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
Copyright 2002 The ANGLE Project Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -589,6 +749,108 @@ angle
Copyright 2018 The ANGLE Project Authors.
All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+ Ltd., nor the names of their contributors may be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright 2018 The ANGLE Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+ Ltd., nor the names of their contributors may be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright 2019 The ANGLE Project. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+ Ltd., nor the names of their contributors may be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------------------
+angle
+
+Copyright 2020 The ANGLE Project Authors. All rights reserved.
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
@@ -958,6 +1220,30 @@ MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
angle
khronos
+Copyright (c) 2013-2014 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are 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 Materials.
+
+THE MATERIALS ARE 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
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+--------------------------------------------------------------------------------
+angle
+khronos
+
Copyright (c) 2013-2016 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
@@ -1028,41 +1314,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
--------------------------------------------------------------------------------
angle
-vulkan-validation-layers
-
-Copyright 2018 The ANGLE Project Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
- Ltd., nor the names of their contributors may be used to endorse
- or promote products derived from this software without specific
- prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
-angle
xxhash
Copyright 2019 The ANGLE Project Authors. All rights reserved.
@@ -4848,31 +5099,6 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
-compiler
-
-Copyright (C) 2012 Apple Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
dart
Copyright (c) 2003-2005 Tom Wu
@@ -7355,6 +7581,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
--------------------------------------------------------------------------------
fuchsia_sdk
skia
+zlib
Copyright 2019 The Chromium Authors. All rights reserved.
@@ -10573,75 +10800,6 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
--------------------------------------------------------------------------------
-khronos
-
-Copyright (c) 2013-2014 The Khronos Group Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and/or associated documentation files (the
-"Materials"), to deal in the Materials without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Materials, and to
-permit persons to whom the Materials are 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 Materials.
-
-THE MATERIALS ARE 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
-MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
---------------------------------------------------------------------------------
-libXNVCtrl
-
-Copyright (c) 2008 NVIDIA, Corporation
-
-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 (including the next
-paragraph) 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.
---------------------------------------------------------------------------------
-libXNVCtrl
-
-Copyright (c) 2010 NVIDIA, Corporation
-
-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 (including the next
-paragraph) 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.
---------------------------------------------------------------------------------
libcxx
libcxxabi
@@ -14956,31 +15114,6 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
-systeminfo
-
-Copyright (C) 2009 Apple Inc. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
tcmalloc
@@ -15068,36 +15201,6 @@ 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.
--------------------------------------------------------------------------------
-trace_event
-
-Copyright (c) 2013 The Chromium Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
uuid
Copyright (c) 2012 Yulian Kuncheff
diff --git a/public/css/app.css b/public/css/app.css
index 2a9cf886df9d..78e4674810f9 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -1 +1 @@
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Open Sans,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;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.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}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-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:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-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;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);font-weight:600}.button-primary{--bg-opacity:1;background-color:#3f83f8;background-color:rgba(63,131,248,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-primary:hover{--bg-opacity:1;background-color:#1c64f2;background-color:rgba(28,100,242,var(--bg-opacity))}.button-block{display:block;width:100%}.button-danger{--bg-opacity:1;background-color:#f05252;background-color:rgba(240,82,82,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-danger:hover{--bg-opacity:1;background-color:#e02424;background-color:rgba(224,36,36,var(--bg-opacity))}.button-secondary{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.button-secondary:hover{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.button-link{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.button-link:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity));text-decoration:underline}.button-link:focus{outline:0;text-decoration:underline}.validation{border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));padding:.25rem .75rem}.validation-fail{border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.validation-fail,.validation-pass{--border-opacity:1;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-size:.875rem}.validation-pass{border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.input{align-items:center;border-width:1px;--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));border-radius:.25rem;margin-top:.5rem;padding:.5rem 1rem;font-size:.875rem}.input:focus{outline:0;--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.input-label{font-size:.875rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.alert{padding:.75rem 1rem;font-size:.875rem;border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.alert-success{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.alert-failure{--border-opacity:1;border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.badge-light,.badge-primary{--bg-opacity:1;--text-opacity:1}.badge-primary{background-color:#c3ddfd;background-color:rgba(195,221,253,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.badge-danger{background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity));color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.badge-danger,.badge-success{--bg-opacity:1;--text-opacity:1}.badge-success{background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity));color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.badge-secondary{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity));--text-opacity:1;color:#e5e7eb;color:rgba(229,231,235,var(--text-opacity))}.badge-warning{background-color:#feecdc;background-color:rgba(254,236,220,var(--bg-opacity));color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.badge-info,.badge-warning{--bg-opacity:1;--text-opacity:1}.badge-info{background-color:#e1effe;background-color:rgba(225,239,254,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}@media (min-width:640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width:1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;font-size:.875rem!important;margin-left:.5rem!important;margin-right:.5rem!important;padding:.5rem!important}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:#fff!important;border-radius:.375rem!important;font-size:1rem!important;line-height:1.5!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;padding:.5rem 1rem!important;font-size:.875rem!important}@media (min-width:1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;font-weight:600!important;--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;font-size:.875rem!important;line-height:1rem!important;font-weight:500!important;border-radius:.25rem!important;--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;margin-right:.25rem!important;padding:.5rem 1rem!important;cursor:pointer!important}.dataTables_paginate .current{--bg-opacity:1!important;background-color:#1c64f2!important;background-color:rgba(28,100,242,var(--bg-opacity))!important;--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important}.dataTables_info{font-size:.875rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;border-top-width:2px!important;border-color:transparent!important;padding-top:1rem!important;padding-left:1rem!important;padding-right:1rem!important;display:inline-flex!important;align-items:center!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;--text-opacity:1!important;color:#6b7280!important;color:rgba(107,114,128,var(--text-opacity))!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important;cursor:pointer!important}.pagination .page-link:hover{--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.pagination .page-link:focus{outline:0;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.pagination .active>span{--text-opacity:1!important;color:#1c64f2!important;color:rgba(28,100,242,var(--text-opacity))!important;--border-opacity:1!important;border-color:#1c64f2!important;border-color:rgba(28,100,242,var(--border-opacity))!important}.active-page{--bg-opacity:1!important;background-color:#233876!important;background-color:rgba(35,56,118,var(--bg-opacity))!important}.space-x-1>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.25rem*var(--space-x-reverse));margin-left:calc(0.25rem*(1 - var(--space-x-reverse)))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-gray-600{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.bg-gray-800{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity))}.bg-gray-900{--bg-opacity:1;background-color:#161e2e;background-color:rgba(22,30,46,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-green-500{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-800{--bg-opacity:1;background-color:#1e429f;background-color:rgba(30,66,159,var(--bg-opacity))}.bg-blue-900{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-600:hover{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.hover\:bg-blue-900:hover{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.focus\:bg-gray-600:focus{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.focus\:bg-blue-900:focus{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.active\:bg-gray-50:active{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-800{--border-opacity:1;border-color:#252f3f;border-color:rgba(37,47,63,var(--border-opacity))}.border-green-500{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.border-blue-500{--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.border-blue-600{--border-opacity:1;border-color:#1c64f2;border-color:rgba(28,100,242,var(--border-opacity))}.hover\:border-gray-300:hover{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.focus\:border-gray-400:focus{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.border{border-width:1px}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Open Sans,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}.font-medium{font-weight:500}.font-bold{font-weight:700}.h-0{height:0}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-16{height:4rem}.h-screen{height:100vh}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-tight{line-height:1.25}.m-auto{margin:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.-mr-1{margin-right:-.25rem}.-ml-1{margin-left:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-px{margin-top:-1px}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pt-4{padding-top:1rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.inset-x-0{right:0;left:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-xs{box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.fill-current{fill:currentColor}.table-auto{table-layout:auto}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-600{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-gray-300:hover{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-600:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-600:hover{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-indigo-900:hover{--text-opacity:1;color:#362f78;color:rgba(54,47,120,var(--text-opacity))}.focus\:text-gray-600:focus{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.focus\:text-gray-700:focus{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-gray-800:active{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.uppercase{text-transform:uppercase}.focus\:underline:focus{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.whitespace-no-wrap{white-space:nowrap}.w-0{width:0}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.gap-4{grid-gap:1rem;gap:1rem}.gap-6{grid-gap:1.5rem;gap:1.5rem}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.col-start-2{grid-column-start:2}.col-start-5{grid-column-start:5}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-4{--transform-translate-y:1rem}.transition-all{transition-property:all}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform}.transition-opacity{transition-property:opacity}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:flex-shrink-0{flex-shrink:0}.sm\:h-10{height:2.5rem}.sm\:text-lg{font-size:1.125rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:text-left{text-align:left}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:gap-4{grid-gap:1rem;gap:1rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.sm\:scale-100{--transform-scale-x:1;--transform-scale-y:1}.sm\:translate-y-0{--transform-translate-y:0}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:flex-shrink-0{flex-shrink:0}.md\:text-3xl{font-size:1.875rem}.md\:mt-0{margin-top:0}.md\:mr-2{margin-right:.5rem}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:-mr-1{margin-right:-.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:gap-6{grid-gap:1.5rem;gap:1.5rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-start-2{grid-column-start:2}}@media (min-width:1024px){.lg\:block{display:block}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:col-span-3{grid-column:span 3/span 3}}
\ No newline at end of file
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Open Sans,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;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.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}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-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:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-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;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);font-weight:600}.button-primary{--bg-opacity:1;background-color:#3f83f8;background-color:rgba(63,131,248,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-primary:hover{--bg-opacity:1;background-color:#1c64f2;background-color:rgba(28,100,242,var(--bg-opacity))}.button-block{display:block;width:100%}.button-danger{--bg-opacity:1;background-color:#f05252;background-color:rgba(240,82,82,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-danger:hover{--bg-opacity:1;background-color:#e02424;background-color:rgba(224,36,36,var(--bg-opacity))}.button-secondary{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.button-secondary:hover{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.button-link{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.button-link:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity));text-decoration:underline}.button-link:focus{outline:0;text-decoration:underline}.validation{border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));padding:.25rem .75rem}.validation-fail{border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.validation-fail,.validation-pass{--border-opacity:1;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-size:.875rem}.validation-pass{border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.input{align-items:center;border-width:1px;--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));border-radius:.25rem;margin-top:.5rem;padding:.5rem 1rem;font-size:.875rem}.input:focus{outline:0;--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.input-label{font-size:.875rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.alert{padding:.75rem 1rem;font-size:.875rem;border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.alert-success{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.alert-failure{--border-opacity:1;border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.badge-light,.badge-primary{--bg-opacity:1;--text-opacity:1}.badge-primary{background-color:#c3ddfd;background-color:rgba(195,221,253,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.badge-danger{background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity));color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.badge-danger,.badge-success{--bg-opacity:1;--text-opacity:1}.badge-success{background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity));color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.badge-secondary{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity));--text-opacity:1;color:#e5e7eb;color:rgba(229,231,235,var(--text-opacity))}.badge-warning{background-color:#feecdc;background-color:rgba(254,236,220,var(--bg-opacity));color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.badge-info,.badge-warning{--bg-opacity:1;--text-opacity:1}.badge-info{background-color:#e1effe;background-color:rgba(225,239,254,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}@media (min-width:640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width:1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;font-size:.875rem!important;margin-left:.5rem!important;margin-right:.5rem!important;padding:.5rem!important}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:#fff!important;border-radius:.375rem!important;font-size:1rem!important;line-height:1.5!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;padding:.5rem 1rem!important;font-size:.875rem!important}@media (min-width:1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;font-weight:600!important;--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;font-size:.875rem!important;line-height:1rem!important;font-weight:500!important;border-radius:.25rem!important;--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;margin-right:.25rem!important;padding:.5rem 1rem!important;cursor:pointer!important}.dataTables_paginate .current{--bg-opacity:1!important;background-color:#1c64f2!important;background-color:rgba(28,100,242,var(--bg-opacity))!important;--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important}.dataTables_info{font-size:.875rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;border-top-width:2px!important;border-color:transparent!important;padding-top:1rem!important;padding-left:1rem!important;padding-right:1rem!important;display:inline-flex!important;align-items:center!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;--text-opacity:1!important;color:#6b7280!important;color:rgba(107,114,128,var(--text-opacity))!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important;cursor:pointer!important}.pagination .page-link:hover{--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.pagination .page-link:focus{outline:0;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.pagination .active>span{--text-opacity:1!important;color:#1c64f2!important;color:rgba(28,100,242,var(--text-opacity))!important;--border-opacity:1!important;border-color:#1c64f2!important;border-color:rgba(28,100,242,var(--border-opacity))!important}.active-page{--bg-opacity:1!important;background-color:#233876!important;background-color:rgba(35,56,118,var(--bg-opacity))!important}.space-x-1>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.25rem*var(--space-x-reverse));margin-left:calc(0.25rem*(1 - var(--space-x-reverse)))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-gray-600{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.bg-gray-800{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity))}.bg-gray-900{--bg-opacity:1;background-color:#161e2e;background-color:rgba(22,30,46,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-green-500{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-800{--bg-opacity:1;background-color:#1e429f;background-color:rgba(30,66,159,var(--bg-opacity))}.bg-blue-900{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-600:hover{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.hover\:bg-blue-900:hover{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.focus\:bg-gray-600:focus{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.focus\:bg-blue-900:focus{--bg-opacity:1;background-color:#233876;background-color:rgba(35,56,118,var(--bg-opacity))}.active\:bg-gray-50:active{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-800{--border-opacity:1;border-color:#252f3f;border-color:rgba(37,47,63,var(--border-opacity))}.border-green-500{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.border-blue-500{--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.border-blue-600{--border-opacity:1;border-color:#1c64f2;border-color:rgba(28,100,242,var(--border-opacity))}.hover\:border-gray-300:hover{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.focus\:border-gray-400:focus{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.border{border-width:1px}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Open Sans,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}.font-medium{font-weight:500}.font-bold{font-weight:700}.h-0{height:0}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-16{height:4rem}.h-screen{height:100vh}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-tight{line-height:1.25}.m-auto{margin:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.-mr-1{margin-right:-.25rem}.-ml-1{margin-left:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-px{margin-top:-1px}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pt-4{padding-top:1rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.inset-x-0{right:0;left:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-xs{box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.fill-current{fill:currentColor}.table-auto{table-layout:auto}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-600{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-gray-300:hover{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-600:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-600:hover{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-indigo-900:hover{--text-opacity:1;color:#362f78;color:rgba(54,47,120,var(--text-opacity))}.focus\:text-gray-600:focus{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.focus\:text-gray-700:focus{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-gray-800:active{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.uppercase{text-transform:uppercase}.focus\:underline:focus{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.whitespace-no-wrap{white-space:nowrap}.w-0{width:0}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.gap-4{grid-gap:1rem;gap:1rem}.gap-6{grid-gap:1.5rem;gap:1.5rem}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.col-start-2{grid-column-start:2}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-4{--transform-translate-y:1rem}.transition-all{transition-property:all}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform}.transition-opacity{transition-property:opacity}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:flex-shrink-0{flex-shrink:0}.sm\:h-10{height:2.5rem}.sm\:text-lg{font-size:1.125rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:text-left{text-align:left}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:gap-4{grid-gap:1rem;gap:1rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.sm\:scale-100{--transform-scale-x:1;--transform-scale-y:1}.sm\:translate-y-0{--transform-translate-y:0}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:flex-shrink-0{flex-shrink:0}.md\:text-3xl{font-size:1.875rem}.md\:mt-0{margin-top:0}.md\:mr-2{margin-right:.5rem}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:-mr-1{margin-right:-.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:gap-6{grid-gap:1.5rem;gap:1.5rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-start-2{grid-column-start:2}}@media (min-width:1024px){.lg\:block{display:block}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:col-span-3{grid-column:span 3/span 3}}
diff --git a/public/flutter_service_worker.js b/public/flutter_service_worker.js
index 116b9a75e297..835f1fd2a343 100644
--- a/public/flutter_service_worker.js
+++ b/public/flutter_service_worker.js
@@ -3,14 +3,14 @@ const MANIFEST = 'flutter-app-manifest';
const TEMP = 'flutter-temp-cache';
const CACHE_NAME = 'flutter-app-cache';
const RESOURCES = {
- "main.dart.js": "1d84a4b8108acec558e8d1d454befcbd",
+ "main.dart.js": "7b418bf606dc352c6570ec012d16e468",
"favicon.ico": "51636d3a390451561744c42188ccd628",
"manifest.json": "77215c1737c7639764e64a192be2f7b8",
"assets/fonts/Roboto-Regular.ttf": "3e1af3ef546b9e6ecef9f3ba197bf7d2",
"assets/fonts/MaterialIcons-Regular.ttf": "56d3ffdef7a25659eab6a68a3fbfaf16",
"assets/web/assets/fonts/Roboto-Regular.ttf": "3e1af3ef546b9e6ecef9f3ba197bf7d2",
"assets/FontManifest.json": "280b2f61f6810d59bd1bcd4cf01d3bf4",
-"assets/NOTICES": "8e6e4a20b409c4109de20a91757d52a7",
+"assets/NOTICES": "594dfdef7edfbabd54dd72c178435409",
"assets/packages/font_awesome_flutter/lib/fonts/fa-regular-400.ttf": "2bca5ec802e40d3f4b60343e346cedde",
"assets/packages/font_awesome_flutter/lib/fonts/fa-solid-900.ttf": "2aa350bd2aeab88b601a593f793734c0",
"assets/packages/font_awesome_flutter/lib/fonts/fa-brands-400.ttf": "5a37ae808cf9f652198acde612b5328d",
@@ -132,7 +132,7 @@ self.addEventListener("fetch", (event) => {
self.addEventListener('message', (event) => {
// SkipWaiting can be used to immediately activate a waiting service worker.
// This will also require a page refresh triggered by the main worker.
- if (event.message == 'skipWaiting') {
+ if (event.data == 'skipWaiting') {
return self.skipWaiting();
}
diff --git a/public/main.dart.js b/public/main.dart.js
index e77cae375fe2..95af3719bb46 100644
--- a/public/main.dart.js
+++ b/public/main.dart.js
@@ -20,7 +20,7 @@ copyProperties(a.prototype,t)
a.prototype=t}}function inheritMany(a,b){for(var t=0;t'
return t+(c?'':'')+""},
-il:function(){var t=$.cAB
-return t==null?$.cAB=H.cXi():t},
-cXi:function(){var t=window.navigator.vendor,s=window.navigator.userAgent.toLowerCase()
-if(t==="Google Inc.")return C.oq
+im:function(){var t=$.cAU
+return t==null?$.cAU=H.cXA():t},
+cXA:function(){var t=window.navigator.vendor,s=window.navigator.userAgent.toLowerCase()
+if(t==="Google Inc.")return C.lJ
else if(t==="Apple Computer, Inc.")return C.bV
-else if(C.d.F(s,"edge/"))return C.Bc
-else if(C.d.F(s,"trident/7.0"))return C.or
+else if(C.d.F(s,"edge/"))return C.Bl
+else if(C.d.F(s,"Edg/"))return C.lJ
+else if(C.d.F(s,"trident/7.0"))return C.ov
else if(t===""&&C.d.F(s,"firefox"))return C.ht
P.aE("WARNING: failed to detect current browser engine.")
-return C.Bd},
-wy:function(){var t=$.cBe
-return t==null?$.cBe=H.cXj():t},
-cXj:function(){var t=window.navigator.platform,s=window.navigator.userAgent
-if(J.dJ(t).dU(t,"Mac"))return C.rr
-else if(C.d.F(t.toLowerCase(),"iphone")||C.d.F(t.toLowerCase(),"ipad")||C.d.F(t.toLowerCase(),"ipod"))return C.n6
-else if(J.iq(s,"Android"))return C.ya
-else if(C.d.dU(t,"Linux"))return C.MY
-else if(C.d.dU(t,"Win"))return C.MZ
-else return C.aiW},
-cv8:function(){var t=window.navigator.clipboard
-return(t==null?null:C.RQ.gaGk(t))!=null?new H.aJ7():new H.aSm()},
-cwU:function(){if(H.il()!==C.ht){var t=window.navigator.clipboard
-t=(t==null?null:C.RQ.gaEO(t))==null}else t=!0
-return t?new H.aSn():new H.aJ8()},
-cQh:function(){var t,s,r=$.csI()
-if(J.i_(r))return
+return C.Bm},
+wE:function(){var t=$.cBw
+return t==null?$.cBw=H.cXB():t},
+cXB:function(){var t=window.navigator.platform,s=window.navigator.userAgent
+if(J.dJ(t).dV(t,"Mac"))return C.rw
+else if(C.d.F(t.toLowerCase(),"iphone")||C.d.F(t.toLowerCase(),"ipad")||C.d.F(t.toLowerCase(),"ipod"))return C.na
+else if(J.ir(s,"Android"))return C.yj
+else if(C.d.dV(t,"Linux"))return C.Na
+else if(C.d.dV(t,"Win"))return C.Nb
+else return C.aj4},
+cvs:function(){var t=window.navigator.clipboard
+return(t==null?null:C.S3.gaGr(t))!=null?new H.aJg():new H.aSx()},
+cxc:function(){if(H.im()!==C.ht){var t=window.navigator.clipboard
+t=(t==null?null:C.S3.gaEV(t))==null}else t=!0
+return t?new H.aSy():new H.aJh()},
+cQz:function(){var t,s,r=$.ct1()
+if(J.i0(r))return
for(t=0;t>>8)/255
r[2]=((255&s.gB(s))>>>0)/255
r[3]=((4278190080&s.gB(s))>>>24)/255
q=t>=p.gJ(p)
-if(q)H.b(P.dC(t,0,p.gJ(p),null,null))
+if(q)H.b(P.dE(t,0,p.gJ(p),null,null))
p.no(0,t,r)}return p},
-cCw:function(a){var t=new Float32Array(4),s=a.a
-t[0]=((16711680&s)>>>16)/255
-t[1]=((65280&s)>>>8)/255
-t[2]=((255&s)>>>0)/255
-t[3]=((4278190080&s)>>>24)/255
+cCO:function(a){var t=new Float32Array(4)
+t[0]=((16711680&a.gB(a))>>>16)/255
+t[1]=((65280&a.gB(a))>>>8)/255
+t[2]=((255&a.gB(a))>>>0)/255
+t[3]=((4278190080&a.gB(a))>>>24)/255
return t},
-a96:function(a){return P.cwh($.e6.i(0,"LTRBRect"),H.a([a.a,a.b,a.c,a.d],u.g5))},
-csg:function(a){return P.cwi(P.aw(["rect",H.a96(new P.aq(a.a,a.b,a.c,a.d)),"rx1",a.e,"ry1",a.f,"rx2",a.r,"ry2",a.x,"rx3",a.y,"ry3",a.z,"rx4",a.Q,"ry4",a.ch],u.X,u._))},
-cCx:function(a){var t=new P.jp([],u.DQ)
+a9b:function(a){return P.cwB($.e6.i(0,"LTRBRect"),H.a([a.a,a.b,a.c,a.d],u.g5))},
+csA:function(a){return P.cwC(P.aw(["rect",H.a9b(new P.aq(a.a,a.b,a.c,a.d)),"rx1",a.e,"ry1",a.f,"rx2",a.r,"ry2",a.x,"rx3",a.y,"ry3",a.z,"rx4",a.Q,"ry4",a.ch],u.X,u._))},
+cCP:function(a){var t=new P.jp([],u.DQ)
t.no(0,"length",2)
t.C(0,0,a.a)
t.C(0,1,a.b)
return t},
-dbV:function(a){var t="BlendMode"
-switch(a){case C.AT:return J.d($.e6.i(0,t),"Clear")
-case C.un:return J.d($.e6.i(0,t),"Src")
-case C.AY:return J.d($.e6.i(0,t),"Dst")
+dcd:function(a){var t="BlendMode"
+switch(a){case C.B1:return J.d($.e6.i(0,t),"Clear")
+case C.ur:return J.d($.e6.i(0,t),"Src")
+case C.B6:return J.d($.e6.i(0,t),"Dst")
case C.lF:return J.d($.e6.i(0,t),"SrcOver")
-case C.B3:return J.d($.e6.i(0,t),"DstOver")
-case C.ol:return J.d($.e6.i(0,t),"SrcIn")
-case C.uo:return J.d($.e6.i(0,t),"DstIn")
-case C.om:return J.d($.e6.i(0,t),"SrcOut")
-case C.up:return J.d($.e6.i(0,t),"DstOut")
+case C.Bc:return J.d($.e6.i(0,t),"DstOver")
+case C.oq:return J.d($.e6.i(0,t),"SrcIn")
+case C.us:return J.d($.e6.i(0,t),"DstIn")
+case C.or:return J.d($.e6.i(0,t),"SrcOut")
+case C.ut:return J.d($.e6.i(0,t),"DstOut")
case C.lG:return J.d($.e6.i(0,t),"SrcATop")
-case C.AU:return J.d($.e6.i(0,t),"DstATop")
-case C.od:return J.d($.e6.i(0,t),"Xor")
-case C.oe:return J.d($.e6.i(0,t),"Plus")
+case C.B2:return J.d($.e6.i(0,t),"DstATop")
+case C.oi:return J.d($.e6.i(0,t),"Xor")
+case C.oj:return J.d($.e6.i(0,t),"Plus")
case C.lD:return J.d($.e6.i(0,t),"Modulate")
-case C.AV:return J.d($.e6.i(0,t),"Screen")
-case C.of:return J.d($.e6.i(0,t),"Overlay")
-case C.AW:return J.d($.e6.i(0,t),"Darken")
-case C.AX:return J.d($.e6.i(0,t),"Lighten")
-case C.og:return J.d($.e6.i(0,t),"ColorDodge")
-case C.oh:return J.d($.e6.i(0,t),"ColorBurn")
-case C.AZ:return J.d($.e6.i(0,t),"HardLight")
-case C.B_:return J.d($.e6.i(0,t),"SoftLight")
-case C.B0:return J.d($.e6.i(0,t),"Difference")
-case C.B1:return J.d($.e6.i(0,t),"Exclusion")
-case C.B2:return J.d($.e6.i(0,t),"Multiply")
-case C.oi:return J.d($.e6.i(0,t),"Hue")
+case C.B3:return J.d($.e6.i(0,t),"Screen")
+case C.ok:return J.d($.e6.i(0,t),"Overlay")
+case C.B4:return J.d($.e6.i(0,t),"Darken")
+case C.B5:return J.d($.e6.i(0,t),"Lighten")
+case C.ol:return J.d($.e6.i(0,t),"ColorDodge")
+case C.om:return J.d($.e6.i(0,t),"ColorBurn")
+case C.B7:return J.d($.e6.i(0,t),"HardLight")
+case C.B8:return J.d($.e6.i(0,t),"SoftLight")
+case C.B9:return J.d($.e6.i(0,t),"Difference")
+case C.Ba:return J.d($.e6.i(0,t),"Exclusion")
+case C.Bb:return J.d($.e6.i(0,t),"Multiply")
+case C.on:return J.d($.e6.i(0,t),"Hue")
case C.lE:return J.d($.e6.i(0,t),"Saturation")
-case C.oj:return J.d($.e6.i(0,t),"Color")
-case C.ok:return J.d($.e6.i(0,t),"Luminosity")
+case C.oo:return J.d($.e6.i(0,t),"Color")
+case C.op:return J.d($.e6.i(0,t),"Luminosity")
default:return null}},
-dbW:function(a){var t,s,r,q,p=null,o=new P.jp([],u.DQ)
+dce:function(a){var t,s,r,q,p=null,o=new P.jp([],u.DQ)
o.no(0,"length",9)
-for(t=0;t<9;++t){s=C.aeh[t]
+for(t=0;t<9;++t){s=C.aeq[t]
if(s<16){r=a[s]
q=t>=o.gJ(o)
-if(q)H.b(P.dC(t,0,o.gJ(o),p,p))
+if(q)H.b(P.dE(t,0,o.gJ(o),p,p))
o.no(0,t,r)}else{r=t>=o.gJ(o)
-if(r)H.b(P.dC(t,0,o.gJ(o),p,p))
+if(r)H.b(P.dE(t,0,o.gJ(o),p,p))
o.no(0,t,0)}}return o},
-dbX:function(a){var t
-if(a==null)return $.cH8()
-t=P.cq4(a,u.g)
+dcf:function(a){var t
+if(a==null)return $.cHr()
+t=P.cqo(a,u.g)
t.no(0,"length",a.length)
return t},
-d8E:function(a,b,c,d,e,f){var t=e?1:0,s=b.pD(0),r=P.bk(C.k.aJ(((4278190080&c.gB(c))>>>24)*0.039),(16711680&c.gB(c))>>>16,(65280&c.gB(c))>>>8,(255&c.gB(c))>>>0),q=P.bk(C.k.aJ(((4278190080&c.gB(c))>>>24)*0.25),(16711680&c.gB(c))>>>16,(65280&c.gB(c))>>>8,(255&c.gB(c))>>>0),p=P.cwi(P.aw(["ambient",H.cCw(r),"spot",H.cCw(q)],u.X,u.cU)),o=$.e6.f6("computeTonalColors",H.a([p],u.e5)),n=u.g5,m=u.g
-a.f6("drawShadow",[b.a,P.cq4(H.a([0,0,f*d],n),m),P.cq4(H.a([(s.a+s.c)/2,s.b-600,f*600],n),m),f*800,o.i(0,"ambient"),o.i(0,"spot"),t])},
-cpu:function(a,b,c,d,e,f,g,h,i){var t=$.cvw
-if(t==null?$.cvw=a.ellipse!=null:t)a.ellipse(b,c,d,e,f,g,h,i)
+d8Y:function(a,b,c,d,e,f){var t=e?1:0,s=b.pE(0),r=P.bl(C.k.aK(((4278190080&c.gB(c))>>>24)*0.039),(16711680&c.gB(c))>>>16,(65280&c.gB(c))>>>8,(255&c.gB(c))>>>0),q=P.bl(C.k.aK(((4278190080&c.gB(c))>>>24)*0.25),(16711680&c.gB(c))>>>16,(65280&c.gB(c))>>>8,(255&c.gB(c))>>>0),p=P.cwC(P.aw(["ambient",H.cCO(r),"spot",H.cCO(q)],u.X,u.cU)),o=$.e6.f7("computeTonalColors",H.a([p],u.e5)),n=u.g5,m=u.g
+a.f7("drawShadow",[b.a,P.cqo(H.a([0,0,f*d],n),m),P.cqo(H.a([(s.a+s.c)/2,s.b-600,f*600],n),m),f*800,o.i(0,"ambient"),o.i(0,"spot"),t])},
+cpO:function(a,b,c,d,e,f,g,h,i){var t=$.cvQ
+if(t==null?$.cvQ=a.ellipse!=null:t)a.ellipse(b,c,d,e,f,g,h,i)
else{a.save()
a.translate(b,c)
a.rotate(f)
a.scale(d,e)
a.arc(0,0,1,g,h,i)
a.restore()}},
-cMQ:function(a){switch(a){case"DeviceOrientation.portraitUp":return"portrait-primary"
+cN7:function(a){switch(a){case"DeviceOrientation.portraitUp":return"portrait-primary"
case"DeviceOrientation.landscapeLeft":return"portrait-secondary"
case"DeviceOrientation.portraitDown":return"landscape-primary"
case"DeviceOrientation.landscapeRight":return"landscape-secondary"
default:return null}},
-cnM:function(a,b){var t
-if(b.u(0,C.w))return a
-t=new H.dP(new Float32Array(16))
-t.eb(a)
-t.Q2(0,b.a,b.b,0)
+co6:function(a,b){var t
+if(b.v(0,C.w))return a
+t=new H.dQ(new Float32Array(16))
+t.ec(a)
+t.Q4(0,b.a,b.b,0)
return t},
-cAN:function(a,b,c){var t,s,r=a.a.cloneNode(!0),q=r.style
+cB5:function(a,b,c){var t,s,r=a.a.cloneNode(!0),q=r.style
q.position="absolute"
q.whiteSpace="pre-wrap"
C.u.cz(q,C.u.bI(q,"overflow-wrap"),"break-word","")
q.overflow="hidden"
t=H.e(a.gde(a))+"px"
q.height=t
-t=H.e(a.gdX(a))+"px"
+t=H.e(a.gdY(a))+"px"
q.width=t
-if(c!=null)H.csr(r,H.cnM(c,b).a)
+if(c!=null)H.csL(r,H.co6(c,b).a)
s=a.b
if(s.z!=null){t=s.f
t=t==null||t===1}else t=!1
if(t){q.whiteSpace="pre"
C.u.cz(q,C.u.bI(q,"text-overflow"),"ellipsis","")}return r},
-cB2:function(a){return u.bO.b(a)&&J.j(J.d(a,"flutter"),!0)},
-cOf:function(){var t=new H.b2H(P.a4(u.X,u._I))
-t.ae8()
+cBl:function(a){return u.bO.b(a)&&J.j(J.d(a,"flutter"),!0)},
+cOx:function(){var t=new H.b2S(P.a4(u.X,u._I))
+t.aeb()
return t},
-d_R:function(a){},
-dc8:function(b3,b4,b5,b6){var t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,b0,b1,b2
+d0b:function(a){},
+dcr:function(b3,b4,b5,b6){var t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,b0,b1,b2
for(t=b3.a,s=t.length,r=0;r3.141592653589793?1:0)+" "
a.a+=t+(i?0:1)+" "+H.e(b+(s*o-r*n))+" "+H.e(c+(r*o+s*n))},
-daF:function(a,b){var t,s,r,q=C.lL.nS(a)
-switch(q.a){case"create":H.cVU(q,b)
+daZ:function(a,b){var t,s,r,q=C.lM.nS(a)
+switch(q.a){case"create":H.cWb(q,b)
return
case"dispose":t=q.b
-s=$.a9f().b
+s=$.a9l().b
r=s.i(0,t)
-if(r!=null)J.fy(r)
+if(r!=null)J.fz(r)
s.K(0,t)
-b.$1(C.lL.yB(null))
+b.$1(C.lM.yG(null))
return}b.$1(null)},
-cVU:function(a,b){var t,s,r=a.b,q=J.ap(r),p=q.i(r,"id"),o=q.i(r,"viewType")
-q=$.a9f()
+cWb:function(a,b){var t,s,r=a.b,q=J.ap(r),p=q.i(r,"id"),o=q.i(r,"viewType")
+q=$.a9l()
t=q.a
-if(!t.aQ(0,o)){b.$1(C.lL.ayW("Unregistered factory","No factory registered for viewtype '"+H.e(o)+"'"))
+if(!t.aR(0,o)){b.$1(C.lM.az0("Unregistered factory","No factory registered for viewtype '"+H.e(o)+"'"))
return}s=t.i(0,o).$1(p)
q.b.C(0,p,s)
-b.$1(C.lL.yB(null))},
-d6T:function(a){switch(a){case 0:return 1
+b.$1(C.lM.yG(null))},
+d7c:function(a){switch(a){case 0:return 1
case 1:return 4
case 2:return 2
default:return C.h.jv(1,a)}},
-Ts:function(a){var t=J.nj(a)
-return P.bY(0,0,C.k.em((a-t)*1000),t,0,0)},
-cD6:function(a,b){var t=b.$0()
+Tu:function(a){var t=J.nl(a)
+return P.bY(0,0,C.k.en((a-t)*1000),t,0,0)},
+cDo:function(a,b){var t=b.$0()
return t},
-cLc:function(){var t=new H.aBV()
-t.adX()
+cLu:function(){var t=new H.aC2()
+t.ae_()
return t},
-cNM:function(a){var t=new H.Pk(W.cpV(),a)
-t.ae5(a)
+cO3:function(a){var t=new H.Pn(W.cqe(),a)
+t.ae8(a)
return t},
-cqE:function(a,b){var t=W.o_("flt-semantics",null),s=t.style
+cqZ:function(a,b){var t=W.o3("flt-semantics",null),s=t.style
s.position="absolute"
if(a===0){s=t.style
s.toString
C.u.cz(s,C.u.bI(s,"filter"),"opacity(0%)","")
s=t.style
-s.color="rgba(0,0,0,0)"}return new H.hO(a,b,t,P.a4(u.ky,u.bm))},
-cN2:function(){var t=u.e,s=u.yq,r=H.a([],u.vU),q=H.a([],u.s),p=J.eb(C.Pi.a,H.wy())?new H.aOQ():new H.b5B()
-p=new H.aRA(P.a4(t,s),P.a4(t,s),r,q,new H.aRD(),new H.bhb(p),C.ec,H.a([],u.uD))
-p.ae3()
+s.color="rgba(0,0,0,0)"}return new H.hP(a,b,t,P.a4(u.ky,u.bm))},
+cNk:function(){var t=u.e,s=u.yq,r=H.a([],u.vU),q=H.a([],u.s),p=J.eb(C.Pv.a,H.wE())?new H.aOZ():new H.b5N()
+p=new H.aRJ(P.a4(t,s),P.a4(t,s),r,q,new H.aRM(),new H.bhn(p),C.ed,H.a([],u.uD))
+p.ae6()
return p},
-ux:function(){var t=$.cvH
-return t==null?$.cvH=H.cN2():t},
-cCv:function(a){var t,s,r,q,p,o,n,m,l,k=a.length,j=u.W,i=H.a([],j),h=H.a([0],j)
+uC:function(){var t=$.cw0
+return t==null?$.cw0=H.cNk():t},
+cCN:function(a){var t,s,r,q,p,o,n,m,l,k=a.length,j=u.W,i=H.a([],j),h=H.a([0],j)
for(t=0,s=0;s=0;--s){m[s]=l
l=i[l]}return m},
-cr0:function(){var t=new H.bqX(),s=new Uint8Array(0)
-t.a=new H.aoS(s,s.length)
+crl:function(){var t=new H.bra(),s=new Uint8Array(0)
+t.a=new H.aoY(s,s.length)
s=new DataView(new ArrayBuffer(8))
t.b=s
-t.c=H.kz(s.buffer,0,null)
+t.c=H.kA(s.buffer,0,null)
return t},
-aWp:function(a,b,c,d,e,f){return new H.aWo(a,b,c,d,e,null)},
-cBN:function(a){if(a===0)return C.w
+aWA:function(a,b,c,d,e,f){return new H.aWz(a,b,c,d,e,null)},
+cC4:function(a){if(a===0)return C.w
return new P.X(200*a/600,400*a/600)},
-d6S:function(a,b){var t,s,r,q,p,o
+d7b:function(a,b){var t,s,r,q,p,o
if(b===0)return a
t=a.c
s=a.a
@@ -517,98 +518,111 @@ r=a.d
q=a.b
p=b*((800+(t-s)*0.5)/600)
o=b*((800+(r-q)*0.5)/600)
-return new P.aq(s-p,q-o,t+p,r+o).ec(H.cBN(b))},
-cBM:function(a,b){if(b===0)return null
-return new H.bjT(Math.min(b*((800+(a.c-a.a)*0.5)/600),b*((800+(a.d-a.b)*0.5)/600)),H.cBN(b))},
-cD8:function(a){var t=a.a
-return new P.a1((((C.F.aJ(0.3*((4278190080&t)>>>24))&255)<<24|t&16777215)&4294967295)>>>0)},
-cBV:function(a,b){var t=b.pD(0),s=t.c,r=t.d,q=H.cBg(b,0,0,1/s,1/r),p=$.eX()
-p.fY(a,"clip-path","url(#svgClip"+$.a8M+")")
-p.fY(a,"-webkit-clip-path","url(#svgClip"+$.a8M+")")
+return new P.aq(s-p,q-o,t+p,r+o).ed(H.cC4(b))},
+cC3:function(a,b){if(b===0)return null
+return new H.bk6(Math.min(b*((800+(a.c-a.a)*0.5)/600),b*((800+(a.d-a.b)*0.5)/600)),H.cC4(b))},
+cDq:function(a){var t=a.a
+return new P.a1((((C.F.aK(0.3*((4278190080&t)>>>24))&255)<<24|t&16777215)&4294967295)>>>0)},
+cCc:function(a,b){var t=b.pE(0),s=t.c,r=t.d,q=H.cBy(b,0,0,1/s,1/r),p=$.eX()
+p.fY(a,"clip-path","url(#svgClip"+$.a8R+")")
+p.fY(a,"-webkit-clip-path","url(#svgClip"+$.a8R+")")
p=a.style
s=H.e(s)+"px"
p.width=s
s=H.e(r)+"px"
p.height=s
return q},
-bXH:function(a,b,c,d,e,f){var t=a-c,s=b-d
+bY_:function(a,b,c,d,e,f){var t=a-c,s=b-d
return t*t/(e*e)+s*s/(f*f)<1},
-c2b:function(a){if(a instanceof H.xb)if(a.z===H.dF()){$.a8S.push(a)
-if($.a8S.length>30)C.b.fn($.a8S,0).d.D()}else a.d.D()},
-dfh:function(a,b,c,d){var t=c.a.b,s=new H.lw(null,u.Vr)
-$.q3.push(s)
-return new H.akY(a,b,c,t,new H.abd(u.Pi),s,C.cX)},
-b9f:function(a,b){if(a<=0)return b*0.1
+c2v:function(a){if(a instanceof H.xh)if(a.z===H.dG()){$.a8X.push(a)
+if($.a8X.length>30)C.b.fo($.a8X,0).d.D()}else a.d.D()},
+dfA:function(a,b,c,d){var t=c.a.b,s=new H.ly(null,u.Vr)
+$.q7.push(s)
+return new H.al3(a,b,c,t,new H.abi(u.Pi),s,C.cY)},
+b9r:function(a,b){if(a<=0)return b*0.1
else return Math.min(Math.max(b*0.5,a*10),b)},
-N2:function(a,b){var t=a<0?0:a,s=b<0?0:b
+N4:function(a,b){var t=a<0?0:a,s=b<0?0:b
return t*t+s*s},
-a8P:function(a){var t,s=a==null?null:a.a.y,r=s!=null?0+s.b*2:0
+a8U:function(a){var t,s=a==null?null:a.a.y,r=s!=null?0+s.b*2:0
a.ghA()
t=a.ghA()
return t!==0?r+a.ghA()*0.70710678118:r},
-d6k:function(a){var t,s,r=$.c24,q=r.length
-if(q!==0){if(q>1)C.b.c1(r,new H.chO())
-for(r=$.c24,q=r.length,t=0;t1)C.b.c1(r,new H.ci8())
+for(r=$.c2o,q=r.length,t=0;t0?C.d.dm(a,t-1):null
-if(q===11||q===12)return new H.Ip(t,C.wQ)
-p=q===13
-if(p&&r===10)continue
-if(p||q===10||q===133)return new H.Ip(t,C.wQ)
-if(r===11||r===12||r===13||r===10||r===133)continue
-if(t>=s)return new H.Ip(s,C.px)
-if(r===32||r===9)continue
-if(q===32||q===9||q===45)return new H.Ip(t,C.G6)}return new H.Ip(s,C.px)},
-d4W:function(a){return a===32||a===9||H.cBd(a)},
-cBd:function(a){return a===13||a===10||a===133},
-SK:function(a){var t,s=$.cJ().gpm()
-if(!s.gai(s)){s=$.cqZ.a
+cNJ:function(){var t=u.J1
+if($.cpd())return new H.af4(H.a([],t))
+else return new H.axm(H.a([],t))},
+c2n:function(a){if(a===C.wY||a===C.Ge)return C.ix
+if(a===C.Gf||a===C.Gg||a===C.Gh||a===C.Gi)return C.Gj
+return a},
+dck:function(a,b){var t,s,r,q,p=$.a9h().rZ(0,a,b),o=H.c2n(p)
+if(o===C.pC){p=C.wZ
+o=C.wZ
+t=!0}else t=!1
+for(s=a.length;b=s)return new H.zP(s,C.pB)
+if(o===C.x_||q===C.x_)return new H.zP(b,C.wW)
+if(q===C.pC){t=!0
+continue}if(t)return new H.zP(b,C.wW)
+o=q
+p=r}return new H.zP(s,C.pB)},
+d5g:function(a){var t=H.c2n($.a9h().MZ(a))
+return t===C.pC||t===C.ix||t===C.mm},
+d0a:function(a){var t=H.c2n($.a9h().MZ(a))
+return t===C.ix||t===C.mm},
+SN:function(a){var t,s=$.cJ().gpm()
+if(!s.gai(s)){s=$.crj.a
if(s===!0){t=a.b
s=a.c!=null&&t.y==null&&t.x==null}else s=!1}else s=!1
-if(s){s=$.cuU
-return s==null?$.cuU=new H.aGh(W.cuT(null,null).getContext("2d")):s}s=$.cvy
-return s==null?$.cvy=new H.aQz():s},
-cvx:function(a,b){if(a<=b)return b
+if(s){s=$.cvd
+return s==null?$.cvd=new H.aGp(W.cvc(null,null).getContext("2d")):s}s=$.cvS
+return s==null?$.cvS=new H.aQI():s},
+cvR:function(a,b){if(a<=b)return b
if(a-b<2)return a
-throw H.i(P.Xs("minIntrinsicWidth ("+H.e(a)+") is greater than maxIntrinsicWidth ("+H.e(b)+")."))},
-UW:function(a,b,c,d,e){var t,s
+throw H.i(P.Xw("minIntrinsicWidth ("+H.e(a)+") is greater than maxIntrinsicWidth ("+H.e(b)+")."))},
+UY:function(a,b,c,d,e){var t,s
if(d===e)return 0
-if(d===$.cB6&&e===$.cB5&&c==$.cB8&&J.j($.cB7,b))return $.cB9
-$.cB6=d
-$.cB5=e
-$.cB8=c
-$.cB7=b
+if(d===$.cBp&&e===$.cBo&&c==$.cBr&&J.j($.cBq,b))return $.cBs
+$.cBp=d
+$.cBo=e
+$.cBr=c
+$.cBq=b
t=b.r
if(t==null)t=0
s=d===0&&e===c.length?c:J.km(c,d,e)
-return $.cB9=C.k.aJ((a.measureText(s).width+t*s.length)*100)/100},
-UV:function(a,b,c,d){var t=J.dJ(a)
-while(!0){if(!(b"))},
-d3G:function(a,b,c,d){var t,s,r,q,p,o=H.a([],d.h("U*>")),n=a.length
-for(t=d.h("a1A<0*>"),s=0;s"))},
+d40:function(a,b,c,d){var t,s,r,q,p,o=H.a([],d.h("T*>")),n=a.length
+for(t=d.h("a1E<0*>"),s=0;s=r&&q<=t))break
q+=s
-if(H.cRe(b,q))break}return q},
-cRe:function(a,b){var t,s,r,q,p,o,n,m=null
+if(H.cRw(b,q))break}return q},
+cRw:function(a,b){var t,s,r,q,p,o,n,m=null
if(b<=0||b>=a.length)return!0
t=b-1
-if((C.d.dm(a,t)&63488)===55296)return!1
-s=$.a9g().yM(0,a,b)
-r=$.a9g().yM(0,a,t)
-if(r===C.tu&&s===C.tv)return!1
-if(H.j3(r,C.Ad,C.tu,C.tv,m,m))return!0
-if(H.j3(s,C.Ad,C.tu,C.tv,m,m))return!0
-if(r===C.Ac&&s===C.Ac)return!1
-if(H.j3(s,C.nV,C.nW,C.nU,m,m))return!1
-for(q=0;H.j3(r,C.nV,C.nW,C.nU,m,m);){++q
+if((C.d.dr(a,t)&63488)===55296)return!1
+s=$.a9m().rZ(0,a,b)
+r=$.a9m().rZ(0,a,t)
+if(r===C.tz&&s===C.tA)return!1
+if(H.j3(r,C.Am,C.tz,C.tA,m,m))return!0
+if(H.j3(s,C.Am,C.tz,C.tA,m,m))return!0
+if(r===C.Al&&s===C.Al)return!1
+if(H.j3(s,C.nZ,C.o_,C.nY,m,m))return!1
+for(q=0;H.j3(r,C.nZ,C.o_,C.nY,m,m);){++q
t=b-q-1
if(t<0)return!0
-r=$.a9g().yM(0,a,t)}if(H.j3(r,C.dv,C.cd,m,m,m)&&H.j3(s,C.dv,C.cd,m,m,m))return!1
+r=$.a9m().rZ(0,a,t)}if(H.j3(r,C.dv,C.ce,m,m,m)&&H.j3(s,C.dv,C.ce,m,m,m))return!1
p=0
do{++p
-o=$.a9g().yM(0,a,b+p)}while(H.j3(o,C.nV,C.nW,C.nU,m,m))
+o=$.a9m().rZ(0,a,b+p)}while(H.j3(o,C.nZ,C.o_,C.nY,m,m))
do{++q
-n=$.a9g().yM(0,a,b-q-1)}while(H.j3(n,C.nV,C.nW,C.nU,m,m))
-if(H.j3(r,C.dv,C.cd,m,m,m)&&H.j3(s,C.Aa,C.nT,C.lx,m,m)&&H.j3(o,C.dv,C.cd,m,m,m))return!1
-if(H.j3(n,C.dv,C.cd,m,m,m)&&H.j3(r,C.Aa,C.nT,C.lx,m,m)&&H.j3(s,C.dv,C.cd,m,m,m))return!1
-t=r===C.cd
+n=$.a9m().rZ(0,a,b-q-1)}while(H.j3(n,C.nZ,C.o_,C.nY,m,m))
+if(H.j3(r,C.dv,C.ce,m,m,m)&&H.j3(s,C.Aj,C.nX,C.lx,m,m)&&H.j3(o,C.dv,C.ce,m,m,m))return!1
+if(H.j3(n,C.dv,C.ce,m,m,m)&&H.j3(r,C.Aj,C.nX,C.lx,m,m)&&H.j3(s,C.dv,C.ce,m,m,m))return!1
+t=r===C.ce
if(t&&s===C.lx)return!1
-if(t&&s===C.A9&&o===C.cd)return!1
-if(n===C.cd&&r===C.A9&&s===C.cd)return!1
-t=r===C.et
-if(t&&s===C.et)return!1
-if(H.j3(r,C.dv,C.cd,m,m,m)&&s===C.et)return!1
-if(t&&H.j3(s,C.dv,C.cd,m,m,m))return!1
-if(n===C.et&&H.j3(r,C.Ab,C.nT,C.lx,m,m)&&s===C.et)return!1
-if(t&&H.j3(s,C.Ab,C.nT,C.lx,m,m)&&o===C.et)return!1
-if(r===C.nX&&s===C.nX)return!1
-if(H.j3(r,C.dv,C.cd,C.et,C.nX,C.tt)&&s===C.tt)return!1
-if(r===C.tt&&H.j3(s,C.dv,C.cd,C.et,C.nX,m))return!1
+if(t&&s===C.Ai&&o===C.ce)return!1
+if(n===C.ce&&r===C.Ai&&s===C.ce)return!1
+t=r===C.eu
+if(t&&s===C.eu)return!1
+if(H.j3(r,C.dv,C.ce,m,m,m)&&s===C.eu)return!1
+if(t&&H.j3(s,C.dv,C.ce,m,m,m))return!1
+if(n===C.eu&&H.j3(r,C.Ak,C.nX,C.lx,m,m)&&s===C.eu)return!1
+if(t&&H.j3(s,C.Ak,C.nX,C.lx,m,m)&&o===C.eu)return!1
+if(r===C.o0&&s===C.o0)return!1
+if(H.j3(r,C.dv,C.ce,C.eu,C.o0,C.ty)&&s===C.ty)return!1
+if(r===C.ty&&H.j3(s,C.dv,C.ce,C.eu,C.o0,m))return!1
return!0},
j3:function(a,b,c,d,e,f){if(a===b)return!0
if(a===c)return!0
@@ -744,14 +758,14 @@ if(d!=null&&a===d)return!0
if(e!=null&&a===e)return!0
if(f!=null&&a===f)return!0
return!1},
-cvG:function(a){switch(a){case"TextInputType.number":return C.TW
-case"TextInputType.phone":return C.U0
-case"TextInputType.emailAddress":return C.Tx
-case"TextInputType.url":return C.U7
-case"TextInputType.multiline":return C.TU
-case"TextInputType.text":default:return C.U6}},
-cXH:function(a){},
-cB_:function(a){var t="transparent",s="none",r=a.style
+cw_:function(a){switch(a){case"TextInputType.number":return C.U9
+case"TextInputType.phone":return C.Ue
+case"TextInputType.emailAddress":return C.TL
+case"TextInputType.url":return C.Ul
+case"TextInputType.multiline":return C.U7
+case"TextInputType.text":default:return C.Uk}},
+cXZ:function(a){},
+cBi:function(a){var t="transparent",s="none",r=a.style
r.whiteSpace="pre-wrap"
C.u.cz(r,C.u.bI(r,"align-content"),"center","")
r.padding="0"
@@ -765,69 +779,69 @@ C.u.cz(r,C.u.bI(r,"resize"),s,"")
C.u.cz(r,C.u.bI(r,"text-shadow"),t,"")
C.u.cz(r,C.u.bI(r,"transform-origin"),"0 0 0","")
C.u.cz(r,C.u.bI(r,"caret-color"),t,null)},
-cN1:function(a,b){var t,s,r,q,p,o,n,m,l,k
+cNj:function(a,b){var t,s,r,q,p,o,n,m,l,k
if(a==null)return null
-t=H.cpc(a)
+t=H.cpw(a)
s=u.X
r=P.a4(s,u.rL)
q=P.a4(s,u.Ky)
p=document.createElement("form")
p.noValidate=!0
-H.cB_(p)
-if(b!=null)for(s=J.a6(b);s.v();){o=s.gA(s)
+H.cBi(p)
+if(b!=null)for(s=J.a6(b);s.u();){o=s.gA(s)
n=J.ap(o)
-m=H.cpc(n.i(o,"autofill"))
+m=H.cpw(n.i(o,"autofill"))
l=m.b
-if(l!=t.b){k=H.cvG(J.d(n.i(o,"inputType"),"name")).LE()
-m.a.rF(k)
-m.rF(k)
-H.cB_(k)
+if(l!=t.b){k=H.cw_(J.d(n.i(o,"inputType"),"name")).LH()
+m.a.rG(k)
+m.rG(k)
+H.cBi(k)
q.C(0,l,m)
r.C(0,l,k)
-p.appendChild(k)}}return new H.aRn(p,r)},
-cpc:function(a){var t,s,r,q,p
+p.appendChild(k)}}return new H.aRw(p,r)},
+cpw:function(a){var t,s,r,q,p
if(a==null)return null
t=J.ap(a)
s=t.i(a,"uniqueIdentifier")
r=t.i(a,"hints")
-q=H.cvC(t.i(a,"editingValue"))
-t=$.cDm()
+q=H.cvW(t.i(a,"editingValue"))
+t=$.cDE()
p=J.d(r,0)
t=t.a.i(0,p)
-return new H.a9V(q,s,t==null?p:t)},
-cvC:function(a){var t=J.ap(a),s=t.i(a,"selectionBase"),r=t.i(a,"selectionExtent")
-return new H.FQ(t.i(a,"text"),Math.max(0,H.ah(s)),Math.max(0,H.ah(r)))},
-cvB:function(a){if(u.p4.b(a))return new H.FQ(a.value,a.selectionStart,a.selectionEnd)
-else if(u.tx.b(a))return new H.FQ(a.value,a.selectionStart,a.selectionEnd)
+return new H.aa_(q,s,t==null?p:t)},
+cvW:function(a){var t=J.ap(a),s=t.i(a,"selectionBase"),r=t.i(a,"selectionExtent")
+return new H.FT(t.i(a,"text"),Math.max(0,H.ah(s)),Math.max(0,H.ah(r)))},
+cvV:function(a){if(u.p4.b(a))return new H.FT(a.value,a.selectionStart,a.selectionEnd)
+else if(u.tx.b(a))return new H.FT(a.value,a.selectionStart,a.selectionEnd)
else throw H.i(P.r("Initialized with unsupported input type"))},
-cNx:function(a){return new H.afc(a,H.a([],u.N2))},
-cC9:function(a,b){var t=new P.ar($.at,b.h("ar<0*>")),s=a.$1(new H.ck2(new P.MX(t,b.h("MX<0*>")),b))
-if(s!=null)throw H.i(P.Xs(s))
+cNP:function(a){return new H.afi(a,H.a([],u.N2))},
+cCr:function(a,b){var t=new P.ar($.at,b.h("ar<0*>")),s=a.$1(new H.ckn(new P.MZ(t,b.h("MZ<0*>")),b))
+if(s!=null)throw H.i(P.Xw(s))
return t},
-csr:function(a,b){var t,s=a.style
+csL:function(a,b){var t,s=a.style
s.toString
C.u.cz(s,C.u.bI(s,"transform-origin"),"0 0 0","")
-t=H.tE(b)
+t=H.tL(b)
C.u.cz(s,C.u.bI(s,"transform"),t,"")},
-tE:function(a){var t=H.cDa(a)
-if(t===C.Q3)return"matrix("+H.e(a[0])+","+H.e(a[1])+","+H.e(a[4])+","+H.e(a[5])+","+H.e(a[12])+","+H.e(a[13])+")"
-else if(t===C.Q4)return H.d9O(a)
+tL:function(a){var t=H.cDs(a)
+if(t===C.Qg)return"matrix("+H.e(a[0])+","+H.e(a[1])+","+H.e(a[4])+","+H.e(a[5])+","+H.e(a[12])+","+H.e(a[13])+")"
+else if(t===C.Qh)return H.da7(a)
else return"none"},
-cDa:function(a){if(!(a[15]===1&&a[14]===0&&a[11]===0&&a[10]===1&&a[9]===0&&a[8]===0&&a[7]===0&&a[6]===0&&a[3]===0&&a[2]===0))return C.Q4
-if(a[0]===1&&a[1]===0&&a[4]===0&&a[5]===1&&a[12]===0&&a[13]===0)return C.Q2
-else return C.Q3},
-d9O:function(a){var t,s,r=a[0]
+cDs:function(a){if(!(a[15]===1&&a[14]===0&&a[11]===0&&a[10]===1&&a[9]===0&&a[8]===0&&a[7]===0&&a[6]===0&&a[3]===0&&a[2]===0))return C.Qh
+if(a[0]===1&&a[1]===0&&a[4]===0&&a[5]===1&&a[12]===0&&a[13]===0)return C.Qf
+else return C.Qg},
+da7:function(a){var t,s,r=a[0]
if(r===1&&a[1]===0&&a[2]===0&&a[3]===0&&a[4]===0&&a[5]===1&&a[6]===0&&a[7]===0&&a[8]===0&&a[9]===0&&a[10]===1&&a[11]===0&&a[14]===0&&a[15]===1){t=a[12]
s=a[13]
return"translate3d("+H.e(t)+"px, "+H.e(s)+"px, 0px)"}else return"matrix3d("+H.e(r)+","+H.e(a[1])+","+H.e(a[2])+","+H.e(a[3])+","+H.e(a[4])+","+H.e(a[5])+","+H.e(a[6])+","+H.e(a[7])+","+H.e(a[8])+","+H.e(a[9])+","+H.e(a[10])+","+H.e(a[11])+","+H.e(a[12])+","+H.e(a[13])+","+H.e(a[14])+","+H.e(a[15])+")"},
-cDb:function(a,b){var t=$.cHr()
+cDt:function(a,b){var t=$.cHK()
t[0]=b.a
t[1]=b.b
t[2]=b.c
t[3]=b.d
-H.csA(a,t)
+H.csU(a,t)
return new P.aq(t[0],t[1],t[2],t[3])},
-csA:function(a,a0){var t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b=$.ctx()
+csU:function(a,a0){var t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b=$.ctR()
b[0]=a0[0]
b[4]=a0[1]
b[8]=0
@@ -844,7 +858,7 @@ b[3]=a0[2]
b[7]=a0[3]
b[11]=0
b[15]=1
-t=$.cHq().a
+t=$.cHJ().a
s=t[0]
r=t[4]
q=t[8]
@@ -882,16 +896,16 @@ a0[0]=Math.min(Math.min(Math.min(b[0],b[1]),b[2]),b[3])
a0[1]=Math.min(Math.min(Math.min(b[4],b[5]),b[6]),b[7])
a0[2]=Math.max(Math.max(Math.max(b[0],b[1]),b[2]),b[3])
a0[3]=Math.max(Math.max(Math.max(b[4],b[5]),b[6]),b[7])},
-cCY:function(a,b){return a.a<=b.a&&a.b<=b.b&&a.c>=b.c&&a.d>=b.d},
-cBg:function(a,b,c,d,e){var t,s='