diff --git a/bin/external/localeo/LocaleoScript.php b/bin/external/localeo/LocaleoScript.php
new file mode 100644
index 0000000000000000000000000000000000000000..bbf8755df56ad834e14726ab81f41cc875e9282b
--- /dev/null
+++ b/bin/external/localeo/LocaleoScript.php
@@ -0,0 +1,320 @@
+<?php
+
+/**
+ * Copyright Maarch since 2008 under licence GPLv3.
+ * See LICENCE.txt file at the root folder for more details.
+ * This file is part of Maarch software.
+ *
+ */
+
+/**
+ * @brief Localeo Script
+ * @author dev@maarch.org
+ */
+
+chdir('../../..');
+
+require 'vendor/autoload.php';
+
+LocaleoScript::sendContact($argv);
+LocaleoScript::updateContact($argv);
+
+class LocaleoScript
+{
+    const MAPPING_CONTACT = [
+        'civility'          => 'civility',
+        'company'           => 'company',
+        'firstname'         => 'firstname',
+        'familyName'        => 'lastname',
+        'email'             => 'email',
+        'phone'             => 'phone',
+        'num'               => 'address_number',
+        'street'            => 'address_street',
+        'ZC'                => 'address_postcode',
+        'additionalAddress' => 'address_additional1',
+        'city'              => 'address_town',
+        'country'           => 'address_country',
+        'externalId'        => 'id'
+    ];
+
+    public static function sendContact(array $args)
+    {
+        $customId = null;
+        if (!empty($args[1]) && $args[1] == '--customId' && !empty($args[2])) {
+            $customId = $args[2];
+        }
+
+        $configuration = LocaleoScript::getXmlLoaded(['path' => 'bin/external/localeo/config.xml', 'customId' => $customId]);
+        if (empty($configuration)) {
+            self::writeLog(['message' => "[SEND_CONTACT] File bin/external/localeo/config.xml does not exist"]);
+            exit();
+        } elseif (empty($configuration->apiKey) || empty($configuration->appName) || empty($configuration->sendContact)) {
+            self::writeLog(['message' => "[SEND_CONTACT] File bin/external/localeo/config.xml is not filled enough"]);
+            return;
+        }
+        if ((string)$configuration->sendContact->enabled == 'false') {
+            return;
+        }
+
+        $apiKey = (string)$configuration->apiKey;
+        $appName = (string)$configuration->appName;
+        $url = (string)$configuration->sendContact->url;
+        if (empty($url)) {
+            self::writeLog(['message' => "[SEND_CONTACT] File bin/external/localeo/config.xml is not filled enough"]);
+            return;
+        }
+
+        $dataToMerge = [];
+        if (!empty($configuration->sendContact->data)) {
+            foreach ($configuration->sendContact->data as $value) {
+                $dataToMerge[(string)$value->key] = (string)$value->value;
+            }
+        }
+
+        \SrcCore\models\DatabasePDO::reset();
+        new \SrcCore\models\DatabasePDO(['customId' => $customId]);
+
+        $contacts = \Contact\models\ContactModel::get([
+            'select'    => ['*'],
+            'where'     => ['enabled = ?', "external_id->>'localeoId' is null"],
+            'data'      => [true]
+        ]);
+
+        foreach ($contacts as $contact) {
+            $body = [];
+            foreach (self::MAPPING_CONTACT as $key => $value) {
+                $body[$key] = $contact[$value] ?? '';
+            }
+            $body = array_merge($body, $dataToMerge);
+
+            $response = \SrcCore\models\CurlModel::execSimple([
+                'url'       => $url,
+                'method'    => 'NO-METHOD',
+                'headers'   => ["Api-Key: {$apiKey}", "appName: {$appName}"],
+                'body'      => ['citoyen' => json_encode($body)],
+                'noLogs'    => true
+            ]);
+
+            if (!empty($response['errors'])) {
+                self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : curl call failed"]);
+                self::writeLog(['message' => $response['errors']]);
+                continue;
+            } elseif (empty($response['response']['id'])) {
+                self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : id is missing"]);
+                self::writeLog(['message' => json_encode($response['response'])]);
+                continue;
+            }
+
+            $externalId = json_decode($contact['external_id'], true);
+            $externalId['localeoId'] = $response['response']['id'];
+            \Contact\models\ContactModel::update(['set' => ['external_id' => json_encode($externalId)], 'where' => ['id = ?'], 'data' => [$contact['id']]]);
+
+            self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : successfully sent to localeo"]);
+        }
+    }
+
+    public static function updateContact(array $args)
+    {
+        $customId = null;
+        if (!empty($args[1]) && $args[1] == '--customId' && !empty($args[2])) {
+            $customId = $args[2];
+        }
+
+        $configuration = LocaleoScript::getXmlLoaded(['path' => 'bin/external/localeo/config.xml', 'customId' => $customId]);
+        if (empty($configuration)) {
+            self::writeLog(['message' => "[UPDATE_CONTACT] File bin/external/localeo/config.xml does not exist"]);
+            exit();
+        } elseif (empty($configuration->apiKey) || empty($configuration->appName) || empty($configuration->updateContact)) {
+            self::writeLog(['message' => "[UPDATE_CONTACT] File bin/external/localeo/config.xml is not filled enough"]);
+            return;
+        }
+        if ((string)$configuration->updateContact->enabled == 'false') {
+            return;
+        }
+
+        $apiKey = (string)$configuration->apiKey;
+        $appName = (string)$configuration->appName;
+        $url = (string)$configuration->updateContact->url;
+        if (empty($url)) {
+            self::writeLog(['message' => "[UPDATE_CONTACT] File bin/external/localeo/config.xml is not filled enough"]);
+            return;
+        }
+
+        $dataToMerge = [];
+        if (!empty($configuration->updateContact->data)) {
+            foreach ($configuration->updateContact->data as $value) {
+                $dataToMerge[(string)$value->key] = (string)$value->value;
+            }
+        }
+
+        \SrcCore\models\DatabasePDO::reset();
+        new \SrcCore\models\DatabasePDO(['customId' => $customId]);
+
+        $where = ['enabled = ?', "external_id->>'localeoId' is not null"];
+        $data = [true];
+        if (file_exists('bin/external/localeo/updateContact.timestamp')) {
+            $time = file_get_contents('bin/external/localeo/updateContact.timestamp');
+            $where[] = 'modification_date > ?';
+            $data[] = date('Y-m-d H:i:s', $time);
+
+        }
+        $file = fopen('bin/external/localeo/updateContact.timestamp', 'w');
+        fwrite($file, time());
+        fclose($file);
+
+        $contacts = \Contact\models\ContactModel::get([
+            'select'    => ['*'],
+            'where'     => $where,
+            'data'      => $data
+        ]);
+
+        foreach ($contacts as $contact) {
+            $externalId = json_decode($contact['external_id'], true);
+
+            $body = [];
+            foreach (self::MAPPING_CONTACT as $key => $value) {
+                $body[$key] = $contact[$value] ?? '';
+            }
+            $body['id'] = $externalId['localeoId'];
+            $body = array_merge($body, $dataToMerge);
+
+            $response = \SrcCore\models\CurlModel::execSimple([
+                'url'       => $url,
+                'method'    => 'NO-METHOD',
+                'headers'   => ["Api-Key: {$apiKey}", "appName: {$appName}"],
+                'body'      => ['citoyen' => json_encode($body)],
+                'noLogs'    => true
+            ]);
+
+            if (!empty($response['errors'])) {
+                self::writeLog(['message' => "[UPDATE_CONTACT] Contact {$contact['id']} : curl call failed"]);
+                self::writeLog(['message' => $response['errors']]);
+                continue;
+            } elseif (empty($response['response']['id'])) {
+                self::writeLog(['message' => "[UPDATE_CONTACT] Contact {$contact['id']} : id is missing"]);
+                self::writeLog(['message' => json_encode($response['response'])]);
+                continue;
+            }
+
+            self::writeLog(['message' => "[UPDATE_CONTACT] Contact {$contact['id']} : successfully sent to localeo"]);
+        }
+    }
+
+//    public static function sendResource(array $args)
+//    {
+//        $customId = null;
+//        if (!empty($args[1]) && $args[1] == '--customId' && !empty($args[2])) {
+//            $customId = $args[2];
+//        }
+//
+//        $configuration = LocaleoScript::getXmlLoaded(['path' => 'bin/external/localeo/config.xml', 'customId' => $customId]);
+//        if (empty($configuration)) {
+//            self::writeLog(['message' => "[SEND_RESOURCE] File bin/external/localeo/config.xml does not exist"]);
+//            exit();
+//        } elseif (empty($configuration->apiKey) || empty($configuration->appName) || empty($configuration->sendResource)) {
+//            self::writeLog(['message' => "[SEND_RESOURCE] File bin/external/localeo/config.xml is not filled enough"]);
+//            return;
+//        }
+//        if ((string)$configuration->sendResource->enabled == 'false') {
+//            return;
+//        }
+//
+//        $apiKey = (string)$configuration->apiKey;
+//        $appName = (string)$configuration->appName;
+//        $url = (string)$configuration->sendResource->url;
+//        if (empty($url)) {
+//            self::writeLog(['message' => "[SEND_RESOURCE] File bin/external/localeo/config.xml is not filled enough"]);
+//            return;
+//        }
+//
+//        $dataToMerge = [];
+//        if (!empty($configuration->sendResource->data)) {
+//            foreach ($configuration->sendResource->data as $value) {
+//                $dataToMerge[(string)$value->key] = (string)$value->value;
+//            }
+//        }
+//
+//        \SrcCore\models\DatabasePDO::reset();
+//        new \SrcCore\models\DatabasePDO(['customId' => $customId]);
+//
+//        $resources = \Resource\models\ResModel::get([
+//            'select'    => ['res_id', 'subject', 'format', 'path', 'filename', 'docserver_id', 'external_id'],
+//            'where'     => ["external_id->>'localeoId' is null"]
+//        ]);
+//
+//        foreach ($resources as $resource) {
+//            if (empty($resource['filename'])) {
+//                self::writeLog(['message' => "[SEND_FILE] Resource {$resource['res_id']} : ({$resource['subject']}) has no file"]);
+//                continue;
+//            }
+//
+//            $docserver = \Docserver\models\DocserverModel::getByDocserverId(['docserverId' => $resource['docserver_id'], 'select' => ['path_template']]);
+//            $file = file_get_contents($docserver['path_template'] . str_replace('#', '/', $resource['path']) . $resource['filename']);
+//            if (empty($file)) {
+//                self::writeLog(['message' => "[SEND_FILE] Resource {$resource['res_id']} : ({$resource['subject']}) file is missing"]);
+//                continue;
+//            }
+//
+//            $encodedFile = base64_encode($file);
+//
+//            if (!empty($config['file'])) {
+//                $docserver = \Docserver\models\DocserverModel::getByDocserverId(['docserverId' => $_SESSION['indexing']['docserver_id'], 'select' => ['path_template']]);
+//                $bodyData[$config['file']] = \SrcCore\models\CurlModel::makeCurlFile(['path' => $docserver['path_template'] . str_replace('#', '/', $_SESSION['indexing']['destination_dir']) . $_SESSION['indexing']['file_destination_name']]);
+//            }
+//
+//            $body = [];
+//            foreach (self::MAPPING_CONTACT as $key => $value) {
+//                $body[$key] = $contact[$value] ?? '';
+//            }
+//            $body = array_merge($body, $dataToMerge);
+//
+//            $response = \SrcCore\models\CurlModel::execSimple([
+//                'url'       => $url,
+//                'method'    => 'NO-METHOD',
+//                'headers'   => ["Api-Key: {$apiKey}", "appName: {$appName}"],
+//                'body'      => [$objectName => json_encode($body)],
+//                'noLogs'    => true
+//            ]);
+//
+//            if (!empty($response['errors'])) {
+//                self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : curl call failed"]);
+//                self::writeLog(['message' => $response['errors']]);
+//                continue;
+//            } elseif (empty($response['response']['id'])) {
+//                self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : id is missing"]);
+//                self::writeLog(['message' => json_encode($response['response'])]);
+//                continue;
+//            }
+//
+//            $externalId = json_decode($contact['external_id'], true);
+//            $externalId['localeoId'] = $response['response']['id'];
+//            \Contact\models\ContactModel::update(['set' => ['external_id' => json_encode($externalId)], 'where' => ['id = ?'], 'data' => [$contact['id']]]);
+//
+//            self::writeLog(['message' => "[SEND_CONTACT] Contact {$contact['id']} : successfully sent to localeo"]);
+//        }
+//    }
+
+    public static function getXmlLoaded(array $args)
+    {
+        if (!empty($args['customId']) && file_exists("custom/{$args['customId']}/{$args['path']}")) {
+            $path = "custom/{$args['customId']}/{$args['path']}";
+        }
+        if (empty($path)) {
+            $path = $args['path'];
+        }
+
+        $xmlfile = null;
+        if (file_exists($path)) {
+            $xmlfile = simplexml_load_file($path);
+        }
+
+        return $xmlfile;
+    }
+
+    public static function writeLog(array $args)
+    {
+        $file = fopen('bin/external/localeo/localeoScript.log', 'a');
+        fwrite($file, '[' . date('Y-m-d H:i:s') . '] ' . $args['message'] . PHP_EOL);
+        fclose($file);
+    }
+}
diff --git a/bin/external/localeo/config.xml b/bin/external/localeo/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..92bc3cd2a0322e2fa4904a308b31450981110d23
--- /dev/null
+++ b/bin/external/localeo/config.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ROOT>
+    <apiKey></apiKey>
+    <appName></appName>
+    <sendContact>
+        <enabled>false</enabled>
+        <url></url>
+        <data>
+            <key>cityId</key>
+            <value>73</value>
+        </data>
+    </sendContact>
+    <updateContact>
+        <enabled>true</enabled>
+        <url></url>
+        <data>
+            <key>cityId</key>
+            <value>73</value>
+        </data>
+    </updateContact>
+    <sendResource>
+        <enabled>false</enabled>
+        <url></url>
+        <data>
+            <key>cityId</key>
+            <value>73</value>
+        </data>
+        <data>
+            <key>servId</key>
+            <value>4129</value>
+        </data>
+        <data>
+            <key>sqrtId</key>
+            <value>12178</value>
+        </data>
+        <data>
+            <key>qrtId</key>
+            <value>125</value>
+        </data>
+    </sendResource>
+</ROOT>
diff --git a/bin/external/localeo/localeo.sh b/bin/external/localeo/localeo.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a5beb1392a64f89660cbdcd0524dac4a829dd2a1
--- /dev/null
+++ b/bin/external/localeo/localeo.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd /var/www/html/maarch_trunk/bin/external/localeo/
+php LocaleoScript.php --customId
diff --git a/bin/external/ozwillo/OzwilloScript.php b/bin/external/ozwillo/OzwilloScript.php
index 5a9a96456a10677d03266f1856ec1b41eb90960a..ba9d954911de39b0dfa8bd526d8924d77988ae7d 100644
--- a/bin/external/ozwillo/OzwilloScript.php
+++ b/bin/external/ozwillo/OzwilloScript.php
@@ -34,7 +34,7 @@ class OzwilloScript
             exit();
         } elseif (empty($configuration->user) || empty($configuration->password) || empty($configuration->sendFile->uri) || empty($configuration->sendFile->status)) {
             self::writeLog(['message' => "[SEND_FILE] File bin/external/ozwillo/config.xml is not filled enough"]);
-            exit();
+            return;
         }
         $user = (string)$configuration->user;
         $password = (string)$configuration->password;
@@ -85,7 +85,7 @@ class OzwilloScript
                 continue;
             } elseif (empty($response['response']['publikId'])) {
                 self::writeLog(['message' => "[SEND_FILE] Resource {$resource['res_id']} : ({$resource['subject']}) publikId is missing"]);
-                self::writeLog(['message' => $response['response']]);
+                self::writeLog(['message' => json_encode($response['response'])]);
                 continue;
             }
 
@@ -110,7 +110,7 @@ class OzwilloScript
             exit();
         } elseif (empty($configuration->user) || empty($configuration->password) || empty($configuration->sendData->uri) || empty($configuration->sendData->status)) {
             self::writeLog(['message' => "[SEND_DATA] File bin/external/ozwillo/config.xml is not filled enough"]);
-            exit();
+            return;
         }
         $user = (string)$configuration->user;
         $password = (string)$configuration->password;
diff --git a/rest/index.php b/rest/index.php
index 7db6f2220d83de7d53832a5fe5dac4b33edeb864..2493c04bc64b19132566be0aac6d7aed147a7ac7 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -104,8 +104,8 @@ $app->delete('/baskets/{id}/groups/{groupId}', \Basket\controllers\BasketControl
 $app->get('/sortedBaskets', \Basket\controllers\BasketController::class . ':getSorted');
 $app->put('/sortedBaskets/{id}', \Basket\controllers\BasketController::class . ':updateSort');
 
-//BatchHistories
-$app->get('/batchHistories', \History\controllers\BatchHistoryController::class . ':get');
+//BatchHistory
+$app->get('/batchHistory', \History\controllers\BatchHistoryController::class . ':get');
 
 //Configurations
 $app->get('/configurations/{service}', \Configuration\controllers\ConfigurationController::class . ':getByService');
@@ -393,7 +393,6 @@ $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/ac
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkValidateParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkValidateParallelOpinion');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkContinueOpinionCircuit', \Action\controllers\PreProcessActionController::class . ':checkContinueOpinionCircuit');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkGiveParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkGiveParallelOpinion');
-$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkValidateParallelOpinionDiffusion', \Action\controllers\PreProcessActionController::class . ':checkValidateParallelOpinionDiffusion');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkInterruptRejectResetVisa', \Action\controllers\PreProcessActionController::class . ':checkInterruptRejectResetVisa');
 
 //Search
diff --git a/src/app/history/controllers/BatchHistoryController.php b/src/app/history/controllers/BatchHistoryController.php
index d9c58930ca98f001fb2d4521513b348189181ce4..20f4f8645650f3719bfef7c93a4d643d7d4db80d 100755
--- a/src/app/history/controllers/BatchHistoryController.php
+++ b/src/app/history/controllers/BatchHistoryController.php
@@ -16,7 +16,6 @@ namespace History\controllers;
 
 use Group\controllers\PrivilegeController;
 use History\models\BatchHistoryModel;
-use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
 
@@ -28,26 +27,46 @@ class BatchHistoryController
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
-        $data = $request->getQueryParams();
+        $queryParams = $request->getQueryParams();
 
-        $check = Validator::floatVal()->notEmpty()->validate($data['startDate']);
-        $check = $check && Validator::floatVal()->notEmpty()->validate($data['endDate']);
-        if (!$check) {
-            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+        $limit = 25;
+        if (!empty($queryParams['limit']) && is_numeric($queryParams['limit'])) {
+            $limit = (int)$queryParams['limit'];
+        }
+        $offset = 0;
+        if (!empty($queryParams['offset']) && is_numeric($queryParams['offset'])) {
+            $offset = (int)$queryParams['offset'];
+        }
+
+        $where = [];
+        $data = [];
+
+        if (!empty($queryParams['startDate'])) {
+            $where[] = 'event_date > ?';
+            $data[] = date('Y-m-d H:i:s', $queryParams['startDate']);
+        }
+        if (!empty($queryParams['endDate'])) {
+            $where[] = 'event_date < ?';
+            $data[] = date('Y-m-d H:i:s', $queryParams['endDate']);
         }
 
-        $maxRequestSize = 25000;
+        $order = !in_array($queryParams['order'], ['asc', 'desc']) ? '' : $queryParams['order'];
+        $orderBy = !in_array($queryParams['orderBy'], ['event_date', 'module_name', 'total_processed', 'total_errors', 'info']) ? ['event_date DESC'] : ["{$queryParams['orderBy']} {$order}"];
 
-        $batchHistories = BatchHistoryModel::get([
-            'select'    => ['event_date', 'module_name', 'total_processed', 'total_errors', 'info'],
-            'where'     => ['event_date > ?', 'event_date < ?'],
-            'data'      => [date('Y-m-d H:i:s', $data['startDate']), date('Y-m-d H:i:s', $data['endDate'])],
-            'orderBy'   => ['event_date DESC'],
-            'limit'     => $maxRequestSize
+        $history = BatchHistoryModel::get([
+            'select'    => ['event_date', 'module_name', 'total_processed', 'total_errors', 'info', 'count(1) OVER()'],
+            'where'     => $where,
+            'data'      => $data,
+            'orderBy'   => $orderBy,
+            'offset'    => $offset,
+            'limit'     => $limit
         ]);
 
-        $limitExceeded = (count($batchHistories) == $maxRequestSize);
+        $total = $history[0]['count'] ?? 0;
+        foreach ($history as $key => $value) {
+            unset($history[$key]['count']);
+        }
 
-        return $response->withJson(['batchHistories' => $batchHistories, 'limitExceeded' => $limitExceeded]);
+        return $response->withJson(['history' => $history, 'count' => $total]);
     }
 }
diff --git a/src/app/history/controllers/HistoryController.php b/src/app/history/controllers/HistoryController.php
index 095bb48a39706cc3d4a375ab997a02b1f8d41431..23841f72e3f6a953dbde0eeb148bffaade19516f 100755
--- a/src/app/history/controllers/HistoryController.php
+++ b/src/app/history/controllers/HistoryController.php
@@ -66,6 +66,7 @@ class HistoryController
             $where[] = 'user_id in (?)';
             $data[] = $users;
         }
+
         if (!empty($queryParams['startDate'])) {
             $where[] = 'event_date > ?';
             $data[] = date('Y-m-d H:i:s', $queryParams['startDate']);
@@ -74,17 +75,19 @@ class HistoryController
             $where[] = 'event_date < ?';
             $data[] = date('Y-m-d H:i:s', $queryParams['endDate']);
         }
+
+        $eventTypes = [];
         if (!empty($queryParams['actions']) && is_array($queryParams['actions'])) {
-            $actions = [];
             foreach ($queryParams['actions'] as $action) {
-                if (is_numeric($action)) {
-                    $actions[] = "ACTION#{$action}";
-                } else {
-                    $actions[] = $action;
-                }
+                $eventTypes[] = "ACTION#{$action}";
             }
+        }
+        if (!empty($queryParams['systemActions']) && is_array($queryParams['systemActions'])) {
+            $eventTypes = array_merge($eventTypes, $queryParams['systemActions']);
+        }
+        if (!empty($eventTypes)) {
             $where[] = 'event_type in (?)';
-            $data[] = $actions;
+            $data[] = $eventTypes;
         }
 
         $order = !in_array($queryParams['order'], ['asc', 'desc']) ? '' : $queryParams['order'];
diff --git a/src/app/history/models/BatchHistoryModelAbstract.php b/src/app/history/models/BatchHistoryModelAbstract.php
index 2d665a34c543f2c34e6c10047050077b64fd91d8..d1707a058c7c189b74695403973458a9da0ecab6 100755
--- a/src/app/history/models/BatchHistoryModelAbstract.php
+++ b/src/app/history/models/BatchHistoryModelAbstract.php
@@ -19,21 +19,22 @@ use SrcCore\models\DatabaseModel;
 
 abstract class BatchHistoryModelAbstract
 {
-    public static function get(array $aArgs)
+    public static function get(array $args)
     {
-        ValidatorModel::notEmpty($aArgs, ['select']);
-        ValidatorModel::arrayType($aArgs, ['select', 'where', 'data', 'orderBy']);
-        ValidatorModel::intVal($aArgs, ['limit']);
+        ValidatorModel::notEmpty($args, ['select']);
+        ValidatorModel::arrayType($args, ['select', 'where', 'data', 'orderBy']);
+        ValidatorModel::intVal($args, ['offset', 'limit']);
 
-        $aHistories = DatabaseModel::select([
-            'select'    => $aArgs['select'],
+        $history = DatabaseModel::select([
+            'select'    => $args['select'],
             'table'     => ['history_batch'],
-            'where'     => $aArgs['where'],
-            'data'      => $aArgs['data'],
-            'order_by'  => $aArgs['orderBy'],
-            'limit'     => $aArgs['limit']
+            'where'     => $args['where'] ?? [],
+            'data'      => $args['data'] ?? [],
+            'order_by'  => $args['orderBy'] ?? [],
+            'offset'    => $args['offset'] ?? 0,
+            'limit'     => $args['limit'] ?? 0
         ]);
 
-        return $aHistories;
+        return $history;
     }
 }
diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 3e4a0bcd724bbda48ecaed9f43371bbde2fb8583..f29634728764d7b9de879f7f5aacbd4d6291d6d3 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -281,6 +281,17 @@ class ResourceListController
             $where[] = 'doctypes.type_id in (?)';
             $queryData[] = explode(',', $args['data']['doctypes']);
         }
+        if (!empty($args['data']['folders'])) {
+            $resourcesInFolders = FolderModel::getWithResources([
+                'select' => ['resources_folders.res_id'],
+                'where'  => ['resources_folders.folder_id in (?)'],
+                'data'   => [explode(',', $args['data']['folders'])]
+            ]);
+            $resourcesInFolders = array_column($resourcesInFolders, 'res_id');
+
+            $where[] = 'res_id in (?)';
+            $queryData[] = $resourcesInFolders;
+        }
 
         if (!empty($args['data']['order']) && strpos($args['data']['order'], 'alt_identifier') !== false) {
             $order = 'order_alphanum(alt_identifier) ' . explode(' ', $args['data']['order'])[1];
@@ -876,12 +887,14 @@ class ResourceListController
         $whereCategories = $where;
         $whereStatuses   = $where;
         $whereEntities   = $where;
-        $whereDocTypes    = $where;
+        $whereDocTypes   = $where;
+        $whereFolders    = $where;
         $dataPriorities  = $queryData;
         $dataCategories  = $queryData;
         $dataStatuses    = $queryData;
         $dataEntities    = $queryData;
-        $dataDocTypes     = $queryData;
+        $dataDocTypes    = $queryData;
+        $dataFolders     = $queryData;
 
         if (isset($data['priorities'])) {
             if (empty($data['priorities'])) {
@@ -898,12 +911,14 @@ class ResourceListController
                 $dataStatuses[]   = explode(',', $replace);
                 $dataEntities[]   = explode(',', $replace);
                 $dataDocTypes[]   = explode(',', $replace);
+                $dataFolders[]    = explode(',', $replace);
             }
 
             $whereCategories[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereEntities[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (isset($data['categories'])) {
             if (empty($data['categories'])) {
@@ -920,12 +935,14 @@ class ResourceListController
                 $dataStatuses[]   = explode(',', $replace);
                 $dataEntities[]   = explode(',', $replace);
                 $dataDocTypes[]   = explode(',', $replace);
+                $dataFolders[]    = explode(',', $replace);
             }
 
             $wherePriorities[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereEntities[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (!empty($data['statuses'])) {
             $wherePriorities[] = 'status in (?)';
@@ -936,6 +953,8 @@ class ResourceListController
             $dataEntities[]    = explode(',', $data['statuses']);
             $whereDocTypes[]   = 'status in (?)';
             $dataDocTypes[]    = explode(',', $data['statuses']);
+            $whereFolders[]    = 'status in (?)';
+            $dataFolders[]     = explode(',', $data['statuses']);
         }
         if (!empty($data['doctypes'])) {
             $wherePriorities[] = 'type_id in (?)';
@@ -946,6 +965,8 @@ class ResourceListController
             $dataEntities[]    = explode(',', $data['doctypes']);
             $whereStatuses[]   = 'type_id in (?)';
             $dataStatuses[]    = explode(',', $data['doctypes']);
+            $whereFolders[]    = 'type_id in (?)';
+            $dataFolders[]     = explode(',', $data['doctypes']);
         }
         if (isset($data['entities'])) {
             if (empty($data['entities'])) {
@@ -962,12 +983,14 @@ class ResourceListController
                 $dataCategories[] = explode(',', $replace);
                 $dataStatuses[] = explode(',', $replace);
                 $dataDocTypes[] = explode(',', $replace);
+                $dataFolders[]  = explode(',', $replace);
             }
 
             $wherePriorities[] = $tmpWhere;
             $whereCategories[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (!empty($data['entitiesChildren'])) {
             $entities = explode(',', $data['entitiesChildren']);
@@ -985,6 +1008,8 @@ class ResourceListController
                 $dataStatuses[]    = $entitiesChildren;
                 $whereDocTypes[]   = 'destination in (?)';
                 $dataDocTypes[]    = $entitiesChildren;
+                $whereFolders[]    = 'destination in (?)';
+                $dataFolders[]     = $entitiesChildren;
             }
         }
 
@@ -1084,11 +1109,42 @@ class ResourceListController
             ];
         }
 
+        $folders = [];
+
+        $resIds = ResModel::getOnView([
+            'select' => ['res_id'],
+            'where'  => $whereFolders,
+            'data'   => $dataFolders
+        ]);
+        $resIds = array_column($resIds, 'res_id');
+
+        $userEntities = EntityModel::getWithUserEntities([
+            'select' => ['entities.id'],
+            'where'  => ['users_entities.user_id = ?'],
+            'data'   => [$GLOBALS['userId']]
+        ]);
+        $userEntities = array_column($userEntities, 'id');
+
+        $rawFolders = FolderModel::getWithEntitiesAndResources([
+            'select'  => ['folders.id', 'folders.label', 'count(resources_folders.res_id) as count'],
+            'where'   => ['resources_folders.res_id in (?)', '(folders.user_id = ? OR entities_folders.entity_id in (?))'],
+            'data'    => [$resIds, $GLOBALS['id'], $userEntities],
+            'groupBy' => ['folders.id', 'folders.label']
+        ]);
+        foreach ($rawFolders as $key => $value) {
+            $folders[] = [
+                'id'    => empty($value['id']) ? null : $value['id'],
+                'label' => empty($value['label']) ? '_UNDEFINED' : $value['label'],
+                'count' => $value['count']
+            ];
+        }
+
         $priorities = (count($priorities) >= 2) ? $priorities : [];
         $categories = (count($categories) >= 2) ? $categories : [];
         $statuses   = (count($statuses) >= 2) ? $statuses : [];
         $entities   = (count($entities) >= 2) ? $entities : [];
         $docTypes   = (count($docTypes) >= 2) ? $docTypes : [];
+        $folders    = (count($folders) >= 2) ? $folders : [];
 
         $entitiesChildren = [];
         foreach ($entities as $entity) {
@@ -1122,14 +1178,17 @@ class ResourceListController
 
         usort($docTypes, ['Resource\controllers\ResourceListController', 'compareSortOnLabel']);
 
+        usort($folders, ['Resource\controllers\ResourceListController', 'compareSortOnLabel']);
+
 
         return [
-            'entities' => $entities,
-            'priorities' => $priorities,
-            'categories' => $categories,
-            'statuses' => $statuses,
+            'entities'         => $entities,
+            'priorities'       => $priorities,
+            'categories'       => $categories,
+            'statuses'         => $statuses,
             'entitiesChildren' => $entitiesChildren,
-            'doctypes' => $docTypes
+            'doctypes'         => $docTypes,
+            'folders'          => $folders
         ];
     }
 
diff --git a/src/frontend/app/actions/avis-parallel-send-action/send-avis-parallel-action.component.ts b/src/frontend/app/actions/avis-parallel-send-action/send-avis-parallel-action.component.ts
index 978f9514b752f89eb77a9b634b728bde5e777670..e5163d39524eb02915c59983fce5aa8fdd7ffe21 100644
--- a/src/frontend/app/actions/avis-parallel-send-action/send-avis-parallel-action.component.ts
+++ b/src/frontend/app/actions/avis-parallel-send-action/send-avis-parallel-action.component.ts
@@ -87,7 +87,7 @@ export class SendAvisParallelComponent implements AfterViewInit {
 
     executeAction(realResSelected: number[]) {
         const noteContent: string = `[${this.lang.avisUserAsk.toUpperCase()}] ${this.noteEditor.getNoteContent()}`;
-        this.http.put(this.data.processActionRoute, { resources: realResSelected, note: noteContent, data: { opinionLimitDate: this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate, true), opinionCircuit : this.appAvisWorkflow.getWorkflow() } }).pipe(
+        this.http.put(this.data.processActionRoute, { resources: realResSelected, note: noteContent, data: { opinionLimitDate: this.functions.formatDateObjectToDateString(this.opinionLimitDate, true, 'yyyy-mm-dd'), opinionCircuit : this.appAvisWorkflow.getWorkflow() } }).pipe(
             tap((data: any) => {
                 if (!data) {
                     this.dialogRef.close('success');
@@ -105,7 +105,7 @@ export class SendAvisParallelComponent implements AfterViewInit {
     }
 
     isValidAction() {
-        if (!this.noResourceToProcess && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate))) {
+        if (!this.noResourceToProcess && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToDateString(this.opinionLimitDate))) {
             return true;
         } else {
             return false;
diff --git a/src/frontend/app/actions/avis-parallel-validate-action/validate-avis-parallel-action.component.ts b/src/frontend/app/actions/avis-parallel-validate-action/validate-avis-parallel-action.component.ts
index 08fa0fa1661bce3c07557ecdd669e613caeb7d5e..ec018d4dec001b95b5a6309be7ee17de7e52cc40 100644
--- a/src/frontend/app/actions/avis-parallel-validate-action/validate-avis-parallel-action.component.ts
+++ b/src/frontend/app/actions/avis-parallel-validate-action/validate-avis-parallel-action.component.ts
@@ -94,7 +94,7 @@ export class ValidateAvisParallelComponent implements AfterViewInit {
 
     executeAction(realResSelected: number[]) {
         const noteContent: string = `[${this.lang.avisUserAsk.toUpperCase()}] ${this.noteEditor.getNoteContent()} ← ${this.lang.validateBy} ${this.headerService.user.firstname} ${this.headerService.user.lastname}`;
-        this.http.put(this.data.processActionRoute, { resources: realResSelected, data: { note: noteContent, opinionLimitDate: this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate, true), opinionCircuit: this.appAvisWorkflow.getWorkflow() } }).pipe(
+        this.http.put(this.data.processActionRoute, { resources: realResSelected, data: { note: noteContent, opinionLimitDate: this.functions.formatDateObjectToDateString(this.opinionLimitDate, true), opinionCircuit: this.appAvisWorkflow.getWorkflow() } }).pipe(
             tap((data: any) => {
                 if (!data) {
                     this.dialogRef.close('success');
@@ -113,7 +113,7 @@ export class ValidateAvisParallelComponent implements AfterViewInit {
 
     isValidAction() {     
         if (this.data.resIds.length === 1) {
-            if (!this.noResourceToProcess && this.noteEditor !== undefined && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate))) {
+            if (!this.noResourceToProcess && this.noteEditor !== undefined && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToDateString(this.opinionLimitDate))) {
                 return true;
             } else {
                 return false;
diff --git a/src/frontend/app/actions/avis-workflow-send-action/send-avis-workflow-action.component.ts b/src/frontend/app/actions/avis-workflow-send-action/send-avis-workflow-action.component.ts
index 695a9af27ecb450d7dab6ffb887077fb5afe4df7..895d494314b161d40baa5ae6ca3de838a03b6c09 100644
--- a/src/frontend/app/actions/avis-workflow-send-action/send-avis-workflow-action.component.ts
+++ b/src/frontend/app/actions/avis-workflow-send-action/send-avis-workflow-action.component.ts
@@ -85,7 +85,7 @@ export class SendAvisWorkflowComponent implements AfterViewInit {
 
     executeAction(realResSelected: number[]) {
         const noteContent: string = `[${this.lang.avisUserAsk.toUpperCase()}] ${this.noteEditor.getNoteContent()}`;
-        this.http.put(this.data.processActionRoute, { resources: realResSelected, note: noteContent, data: { opinionLimitDate: this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate, true) } }).pipe(
+        this.http.put(this.data.processActionRoute, { resources: realResSelected, note: noteContent, data: { opinionLimitDate: this.functions.formatDateObjectToDateString(this.opinionLimitDate, true) } }).pipe(
             tap((data: any) => {
                 if (!data) {
                     this.dialogRef.close('success');
@@ -103,7 +103,7 @@ export class SendAvisWorkflowComponent implements AfterViewInit {
     }
 
     isValidAction() {
-        if (!this.noResourceToProcess && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToFrenchDateString(this.opinionLimitDate))) {
+        if (!this.noResourceToProcess && this.appAvisWorkflow !== undefined && !this.appAvisWorkflow.emptyWorkflow() && !this.appAvisWorkflow.workflowEnd() && !this.functions.empty(this.noteEditor.getNoteContent()) && !this.functions.empty(this.functions.formatDateObjectToDateString(this.opinionLimitDate))) {
             return true;
         } else {
             return false;
diff --git a/src/frontend/app/administration/administration-routing.module.ts b/src/frontend/app/administration/administration-routing.module.ts
index 735427b23cf201255892e50fd0d770916bddb4df..09528a92f8adaa25e6186c0e9e583a1ba2cb64f3 100755
--- a/src/frontend/app/administration/administration-routing.module.ts
+++ b/src/frontend/app/administration/administration-routing.module.ts
@@ -24,6 +24,7 @@ import { ReportsAdministrationComponent }               from './report/reports-a
 import { NotificationsAdministrationComponent }         from './notification/notifications-administration.component';
 import { NotificationAdministrationComponent }          from './notification/notification-administration.component';
 import { HistoryAdministrationComponent }               from './history/history-administration.component';
+import { HistoryBatchAdministrationComponent }          from './history/batch/history-batch-administration.component';
 import { UpdateStatusAdministrationComponent }          from './updateStatus/update-status-administration.component';
 import { ContactsGroupsAdministrationComponent }        from './contact/group/contacts-groups-administration.component';
 import { ContactsGroupAdministrationComponent }         from './contact/group/contacts-group-administration.component';
@@ -81,6 +82,7 @@ import { ContactsPageAdministrationComponent } from './contact/page/contacts-pag
             { path: 'administration/notifications/new', canActivate: [AppGuard], component: NotificationAdministrationComponent },
             { path: 'administration/notifications/:identifier', canActivate: [AppGuard], component: NotificationAdministrationComponent },
             { path: 'administration/history', canActivate: [AppGuard], component: HistoryAdministrationComponent },
+            { path: 'administration/history-batch', canActivate: [AppGuard], component: HistoryBatchAdministrationComponent },
             { path: 'administration/update-status', canActivate: [AppGuard], component: UpdateStatusAdministrationComponent },
             { path: 'administration/contacts', canActivate: [AppGuard], component: ContactsListAdministrationComponent },
             { path: 'administration/contacts/list', redirectTo: 'administration/contacts', pathMatch: 'full' },
diff --git a/src/frontend/app/administration/administration.module.ts b/src/frontend/app/administration/administration.module.ts
index f35bd496b960eb3315c14ce1c41498dce49d09f3..20ded5a9545d703167c81f1f3f5597000162c05c 100755
--- a/src/frontend/app/administration/administration.module.ts
+++ b/src/frontend/app/administration/administration.module.ts
@@ -27,6 +27,7 @@ import { PrioritiesAdministrationComponent }            from './priority/priorit
 import { PriorityAdministrationComponent }              from './priority/priority-administration.component';
 import { ReportsAdministrationComponent }               from './report/reports-administration.component';
 import { HistoryAdministrationComponent }               from './history/history-administration.component';
+import { HistoryBatchAdministrationComponent }               from './history/batch/history-batch-administration.component';
 import { UpdateStatusAdministrationComponent }          from './updateStatus/update-status-administration.component';
 import { NotificationsAdministrationComponent }         from './notification/notifications-administration.component';
 import { NotificationAdministrationComponent }          from './notification/notification-administration.component';
@@ -79,6 +80,7 @@ import { ContactsPageAdministrationComponent }              from './contact/page
         PriorityAdministrationComponent,
         ReportsAdministrationComponent,
         HistoryAdministrationComponent,
+        HistoryBatchAdministrationComponent,
         UpdateStatusAdministrationComponent,
         ContactsGroupsAdministrationComponent,
         ContactsGroupAdministrationComponent,
diff --git a/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.html b/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.html
index 7d5b1c352fd0e41c73e498e368cb8bbae024ca61..0e6c26eba082d6fef55b9a08e15f0c729d7022df 100644
--- a/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.html
+++ b/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -104,7 +104,7 @@
         </div>
     </mat-sidenav-content>
     <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end' opened class="col-md-4 col-sm-12 customFielsdPanel">
+        position='end' opened class="col-md-4 col-sm-12 customFielsdPanel">
         <mat-tab-group>
             <mat-tab [label]="lang.customFieldsTypesAvailable">
                 <div class="customFieldsTypesItem" *ngFor="let customField of customFieldsTypes">
diff --git a/src/frontend/app/administration/contact/group/contacts-group-administration.component.html b/src/frontend/app/administration/contact/group/contacts-group-administration.component.html
index 19f3bb006410ce640898cd84b1d62cb3b8ed808e..08d0b74a327e8a846af66c4d5b72a75df442a9ab 100644
--- a/src/frontend/app/administration/contact/group/contacts-group-administration.component.html
+++ b/src/frontend/app/administration/contact/group/contacts-group-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -135,7 +135,7 @@
         </div>
     </mat-sidenav-content>
     <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end' [opened]="appService.getViewMode() || creationMode ? false : true" style="overflow-x:hidden;width:40%;">
+        position='end' [opened]="appService.getViewMode() || creationMode ? false : true" style="overflow-x:hidden;width:40%;">
         <mat-list>
             <h3 mat-subheader>{{nbContact}} {{lang.relatedContacts}} : </h3>
         </mat-list>
diff --git a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.html b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.html
index 81e1d2d0326e7e4f6d8b965305b1618b3d3a9337..c994ed6e01a1de971d11c22114ec6c504ce6a755 100644
--- a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.html
+++ b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -115,6 +115,6 @@
         </div>
     </mat-sidenav-content>
     <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end'>
+        position='end'>
     </mat-sidenav>
 </mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/contact/list/contacts-list-administration.component.html b/src/frontend/app/administration/contact/list/contacts-list-administration.component.html
index 9ecb707d2e5d8bc52a21e7fe0628dedfa0b744f4..473f458553b89dc790b77b24dfedef7a7020ba6d 100644
--- a/src/frontend/app/administration/contact/list/contacts-list-administration.component.html
+++ b/src/frontend/app/administration/contact/list/contacts-list-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -66,22 +66,19 @@
                             </mat-cell>
                         </ng-container>
                         <ng-container matColumnDef="firstname">
-                            <mat-header-cell *matHeaderCellDef mat-sort-header
-                                [class.hide-for-mobile]="appService.getViewMode()">{{lang.firstname}}</mat-header-cell>
-                            <mat-cell mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.firstname}}</mat-header-cell>
+                            <mat-cell mat-cell *matCellDef="let element">
                                 {{element.firstname}} </mat-cell>
                         </ng-container>
                         <ng-container matColumnDef="lastname">
-                            <mat-header-cell *matHeaderCellDef mat-sort-header
-                                [class.hide-for-mobile]="appService.getViewMode()">{{lang.lastname}}</mat-header-cell>
-                            <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.lastname}}</mat-header-cell>
+                            <mat-cell *matCellDef="let element">
                                 {{element.lastname}} </mat-cell>
                         </ng-container>
                         <ng-container matColumnDef="company">
-                            <mat-header-cell *matHeaderCellDef mat-sort-header
-                                [class.hide-for-mobile]="appService.getViewMode()">{{lang.contactsParameters_company}}
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.contactsParameters_company}}
                             </mat-header-cell>
-                            <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()">
+                            <mat-cell *matCellDef="let element">
                                 {{element.company}} </mat-cell>
                         </ng-container>
                         <ng-container matColumnDef="formatedAddress">
@@ -123,7 +120,4 @@
             </div>
         </div>
     </mat-sidenav-content>
-    <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end' [opened]="appService.getViewMode() ? false : false">
-    </mat-sidenav>
 </mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/contact/page/contacts-page-administration.component.html b/src/frontend/app/administration/contact/page/contacts-page-administration.component.html
index 1e69337cc666b033c70e0ee9307f549d479e9bd7..5b503e599bc53b4a983519aa4be7d321b3ed738f 100644
--- a/src/frontend/app/administration/contact/page/contacts-page-administration.component.html
+++ b/src/frontend/app/administration/contact/page/contacts-page-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -32,7 +32,4 @@
             </div>
         </div>
     </mat-sidenav-content>
-    <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end' [opened]="appService.getViewMode() ? false : false">
-    </mat-sidenav>
 </mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
index 9395ba18bad1a552ed0300f211443d872e1eb740..4a50925405a4f70b08c89f98734bd0052bac4376 100644
--- a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
+++ b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
@@ -609,7 +609,7 @@ export class ContactsFormComponent implements OnInit {
         this.contactForm.filter(field => field.display).forEach(element => {
             if (element.type === 'date' && !this.functions.empty(element.control.value)) {
                 const date = new Date(element.control.value);
-                element.control.value = this.functions.formatDateObjectToFrenchDateString(date);
+                element.control.value = this.functions.formatDateObjectToDateString(date);
             }
             if (element.id.match(regex) !== null) {
                 contact['customFields'][element.id.split(/_(.+)/)[1]] = element.control.value;
diff --git a/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.html b/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.html
index 02fa2b36dde718a938ab1545d2f045b2fa452262..ef6514056a7e60793c86521cbe6105de7e30a2eb 100644
--- a/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.html
+++ b/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.html
@@ -1,6 +1,6 @@
 <mat-sidenav-container autosize class="maarch-container">
     <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" [opened]="appService.getViewMode() ? false : true">
+        [opened]="appService.getViewMode() ? false : true">
         <header-panel [snavLeft]="snav"></header-panel>
         <menu-shortcut></menu-shortcut>
         <menu-nav></menu-nav>
@@ -156,7 +156,4 @@
             </div>
         </div>
     </mat-sidenav-content>
-    <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
-        fixedTopGap="56" position='end'>
-    </mat-sidenav>
 </mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/batch/history-batch-administration.component.html b/src/frontend/app/administration/history/batch/history-batch-administration.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..6a496d78dbbfe4427601f74d1e000eec68ed51c4
--- /dev/null
+++ b/src/frontend/app/administration/history/batch/history-batch-administration.component.html
@@ -0,0 +1,161 @@
+<mat-sidenav-container autosize class="maarch-container">
+    <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
+        [opened]="appService.getViewMode() ? false : true">
+        <header-panel [snavLeft]="snav"></header-panel>
+        <menu-shortcut></menu-shortcut>
+        <menu-nav></menu-nav>
+        <mat-nav-list>
+            <a mat-list-item *ngFor="let menu of subMenus" [class.active]="menu.current" [routerLink]="menu.route">
+                <mat-icon color="primary" mat-list-icon [class]="menu.icon"></mat-icon>
+                <p mat-line>
+                    {{menu.label}}
+                </p>
+            </a>
+        </mat-nav-list>
+        <mat-divider></mat-divider>
+    </mat-sidenav>
+    <mat-sidenav-content>
+        <div class="bg-head">
+            <div class="bg-head-title" [class.customContainerRight]="appService.getViewMode()">
+                <div class="bg-head-title-label">
+                    <header-left [snavLeft]="snav"></header-left>
+                </div>
+                <div class="bg-head-title-tool">
+                    <header-right></header-right>
+                </div>
+            </div>
+            <div class="bg-head-content" [class.fullContainer]="appService.getViewMode()">
+                <div style="display: grid;grid-template-columns: repeat(2, 1fr);grid-gap: 10px;width: 100%;">
+                    <mat-form-field (click)="startPicker.open()" style="cursor:pointer;" class="dateFilter">
+                        <mat-label style="color:white;">{{lang.since}}
+                        </mat-label>
+                        <input [(ngModel)]="startDateFilter" matInput [matDatepicker]="startPicker"
+                            [placeholder]="lang.since" [max]="endDateFilter" readonly style="cursor:pointer;"
+                            (dateChange)="filterStartDate()">
+                        <mat-datepicker-toggle matSuffix [for]="startPicker" *ngIf="!startDateFilter">
+                        </mat-datepicker-toggle>
+                        <mat-datepicker [touchUi]="appService.getViewMode()" #startPicker>
+                        </mat-datepicker>
+                        <button mat-button color="warn" matSuffix mat-icon-button *ngIf="startDateFilter"
+                            (click)="$event.stopPropagation();startDateFilter = '';filterStartDate()"
+                            [title]="lang.eraseValue">
+                            <mat-icon color="warn" class="fa fa-calendar-times">
+                            </mat-icon>
+                        </button>
+                    </mat-form-field>
+                    <mat-form-field (click)="endPicker.open()" style="cursor:pointer;" class="dateFilter">
+                        <mat-label style="color:white;">{{lang.until}}
+                        </mat-label>
+                        <input [(ngModel)]="endDateFilter" matInput [matDatepicker]="endPicker"
+                            [placeholder]="lang.until" [min]="startDateFilter" readonly style="cursor:pointer;"
+                            (dateChange)="filterEndDate()">
+                        <mat-datepicker-toggle matSuffix [for]="endPicker" *ngIf="!endDateFilter">
+                        </mat-datepicker-toggle>
+                        <mat-datepicker [touchUi]="appService.getViewMode()" #endPicker>
+                        </mat-datepicker>
+                        <button mat-button color="warn" matSuffix mat-icon-button *ngIf="endDateFilter"
+                            (click)="$event.stopPropagation();endDateFilter = '';filterEndDate()"
+                            [title]="lang.eraseValue">
+                            <mat-icon color="warn" class="fa fa-calendar-times">
+                            </mat-icon>
+                        </button>
+                    </mat-form-field>
+                </div>
+            </div>
+        </div>
+        <div class="container" [class.fullContainer]="appService.getViewMode()">
+            <div class="container-content">
+                <div class="example-loading-shade" *ngIf="isLoadingResults">
+                    <mat-spinner *ngIf="isLoadingResults"></mat-spinner>
+                </div>
+                <div class="table-head">
+                    <div class="table-head-result">
+                        <mat-form-field floatLabel="never" style="font-size: 13px;">
+                            <input type="text" #autoCompleteInput [matAutocomplete]="auto" [placeholder]="lang.filterBy"
+                                matInput [formControl]="searchHistory" (click)="$event.stopPropagation()"
+                                maxlength="128">
+                            <mat-autocomplete #auto="matAutocomplete" (optionSelected)="addItemFilter($event.option)"
+                                (opened)="initFilterListHistory()">
+                                <mat-option disabled *ngIf="loadingFilters">
+                                    <div style="display: flex;justify-content: center;">
+                                        <mat-spinner diameter="35"></mat-spinner>
+                                    </div>
+                                </mat-option>
+                                <ng-container *ngIf="filterList!==null && !loadingFilters">
+                                    <ng-container *ngFor="let keyVal of filterList | keyvalue">
+                                        <mat-optgroup *ngIf="(filteredList[keyVal.key] | async)?.length > 0"
+                                            [label]="lang[keyVal.key]" class="filterList">
+                                            <mat-option [id]="keyVal.key"
+                                                [style.color]="!filter.used ? filterColor[keyVal.key] : ''"
+                                                *ngFor="let filter of filteredList[keyVal.key] | async | sortBy : 'label'"
+                                                [value]="filter" [disabled]="filter.used">
+                                                {{filter.label}}
+                                            </mat-option>
+                                        </mat-optgroup>
+                                    </ng-container>
+                                </ng-container>
+
+                            </mat-autocomplete>
+                        </mat-form-field>
+                    </div>
+                    <div class="table-head-tool">
+                        <mat-paginator #paginatorHistoryList [length]="resultsLength" [hidePageSize]="true"
+                            [pageSize]="10" class="paginatorResultList"></mat-paginator>
+                    </div>
+                </div>
+                <div style="height:90%;overflow:auto;position:absolute;width:100%;">
+                    <div class="filterBadges">
+                        <ng-container *ngFor="let keyVal of filterUsed | keyvalue">
+                            <ng-container *ngIf="['startDate','endDate'].indexOf(keyVal.key) === -1">
+                                <span *ngFor="let filter of filterUsed[keyVal.key]; let i=index;" class="label"
+                                    [style.background]="filterColor[keyVal.key]" [title]="lang[keyVal.key]"
+                                    (click)="removeItemFilter(filter,keyVal.key,i)">{{filter.label}}
+                                    <i class="fa fa-times-circle"></i></span>
+                            </ng-container>
+                        </ng-container>
+                    </div>
+                    <mat-table id="history-list" #tableHistoryListSort="matSort" [dataSource]="data" matSort
+                        matSortActive="event_date" matSortDirection="desc" style="width:100%;">
+                        <ng-container matColumnDef="event_date">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.event}}</mat-header-cell>
+                            <mat-cell mat-cell *matCellDef="let element" [title]="element.event_date | fullDate">
+                                {{element.event_date  | timeAgo : 'full' | ucfirst}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="total_processed">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.totalProcessed | ucfirst}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element" [class.empty]="element.total_processed === 0">
+                                {{element.total_processed}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="total_errors">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.totalErrors}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element" [class.empty]="element.total_errors === 0" [class.error]="element.total_errors > 0">
+                                {{element.total_errors}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="info">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header style="flex: 2;">{{lang.information}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element" style="flex: 2;">
+                                {{element.info}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="module_name">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.module}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element">
+                                {{element.module_name}} </mat-cell>
+                        </ng-container>
+                        <mat-header-row *matHeaderRowDef="displayedColumnsHistory"></mat-header-row>
+                        <mat-row *matRowDef="let row; columns: displayedColumnsHistory;">
+                        </mat-row>
+                    </mat-table>
+                    <div class="mat-paginator"
+                        style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;">
+                        {{resultsLength}} {{lang.elements}}</div>
+                </div>
+                <div class="table-head">
+                </div>
+            </div>
+        </div>
+    </mat-sidenav-content>
+</mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/batch/history-batch-administration.component.scss b/src/frontend/app/administration/history/batch/history-batch-administration.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..475b4db09906860d44e9a9c17179493482fc825b
--- /dev/null
+++ b/src/frontend/app/administration/history/batch/history-batch-administration.component.scss
@@ -0,0 +1,63 @@
+@import '../../../../css/vars.scss';
+
+.active,
+.active:hover,
+.active:active,
+.active:focus {
+    color: $primary;
+    border-left: solid 5px $primary;
+    background: rgba($primary, 0.14);
+}
+
+
+.paginatorResultList {
+    ::ng-deep.mat-paginator-range-label {
+        justify-content: flex-end;
+        display: flex;
+    }
+}
+
+.filterList {
+    ::ng-deep.mat-optgroup-label {
+        color: $primary;
+        position: sticky;
+        top: 0px;
+        background: white !important;
+        z-index: 1;
+    }
+}
+
+.label {
+    cursor: pointer;
+    margin: 5px;
+}
+
+.bg-head-content {
+    ::ng-deep .mat-focused .mat-form-field-label {
+        /*change color of label*/
+        color: white !important;
+    }
+
+    ::ng-deep.mat-form-field-underline {
+        /*change color of underline*/
+        background-color: white !important;
+    }
+
+    ::ng-deep.mat-form-field-ripple {
+        /*change color of underline when focused*/
+        background-color: white !important;
+    }
+
+    .mat-icon,.mat-datepicker-toggle {
+        color:white;
+    }
+}
+
+.empty {
+    opacity: 0.5;
+}
+
+.error {
+    color: $warn;
+    font-weight: bold;
+}
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/batch/history-batch-administration.component.ts b/src/frontend/app/administration/history/batch/history-batch-administration.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..193237f3cf2f29a62add29328274481035f45563
--- /dev/null
+++ b/src/frontend/app/administration/history/batch/history-batch-administration.component.ts
@@ -0,0 +1,294 @@
+import { Component, OnInit, ViewChild, EventEmitter, ElementRef } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { LANG } from '../../../translate.component';
+import { NotificationService } from '../../../notification.service';
+import { HeaderService } from '../../../../service/header.service';
+import { MatSidenav } from '@angular/material/sidenav';
+import { AppService } from '../../../../service/app.service';
+import { Observable, merge, Subject, of as observableOf, of } from 'rxjs';
+import { MatPaginator, MatSort, MatDialog } from '@angular/material';
+import { takeUntil, startWith, switchMap, map, catchError, filter, exhaustMap, tap, debounceTime, distinctUntilChanged, finalize } from 'rxjs/operators';
+import { FormControl } from '@angular/forms';
+import { FunctionsService } from '../../../../service/functions.service';
+import { LatinisePipe } from 'ngx-pipes';
+import { PrivilegeService } from '../../../../service/privileges.service';
+
+@Component({
+    templateUrl: "history-batch-administration.component.html",
+    styleUrls: ['history-batch-administration.component.scss'],
+    providers: [AppService]
+})
+export class HistoryBatchAdministrationComponent implements OnInit {
+
+    @ViewChild('snav', { static: true }) public sidenavLeft: MatSidenav;
+    @ViewChild('snav2', { static: true }) public sidenavRight: MatSidenav;
+
+    lang: any = LANG;
+    loading: boolean = false;
+
+    filtersChange = new EventEmitter();
+
+    data: any;
+
+    displayedColumnsHistory: string[] = ['event_date', 'total_processed', 'total_errors', 'info', 'module_name'];
+
+    isLoadingResults = true;
+    routeUrl: string = '../../rest/batchHistory';
+    resultListDatabase: HistoryListHttpDao | null;
+    resultsLength = 0;
+
+    searchHistory = new FormControl();
+    startDateFilter: any = '';
+    endDateFilter: any = '';
+    filterUrl: string = '';
+    filterList: any = null;
+    filteredList: any = {};
+    filterUsed: any = {};
+
+    filterColor = {
+        startDate: '#b5cfd8',
+        endDate: '#7393a7',
+        errors: '#7d5ba6'
+    };
+
+    loadingFilters: boolean = true;
+
+    @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+    @ViewChild('tableHistoryListSort', { static: true }) sort: MatSort;
+    @ViewChild('autoCompleteInput', { static: true }) autoCompleteInput: ElementRef;
+
+    private destroy$ = new Subject<boolean>();
+
+    subMenus: any[] = [];
+
+    constructor(
+        public http: HttpClient,
+        private notify: NotificationService,
+        private headerService: HeaderService,
+        public appService: AppService,
+        public dialog: MatDialog,
+        public functions: FunctionsService,
+        private latinisePipe: LatinisePipe,
+        private privilegeService: PrivilegeService) { }
+
+    ngOnInit(): void {
+        if (this.privilegeService.hasCurrentUserPrivilege('view_history')) {
+            this.subMenus = [
+                {
+                    icon: 'fa fa-history',
+                    route: '/administration/history',
+                    label: this.lang.history,
+                    current: false
+                },
+                {
+                    icon: 'fa fa-history',
+                    route: '/administration/history-batch',
+                    label: this.lang.historyBatch,
+                    current: true
+                }
+            ];
+        } else {
+            this.subMenus = [
+                {
+                    icon: 'fa fa-history',
+                    route: '/administration/history-batch',
+                    label: this.lang.historyBatch,
+                    current: true
+                }
+            ];
+        }
+        this.loading = true;
+        this.initHistoryList();
+    }
+
+    initHistoryList() {
+        this.resultListDatabase = new HistoryListHttpDao(this.http);
+        this.paginator.pageIndex = 0;
+        this.sort.active = 'event_date';
+        this.sort.direction = 'desc';
+        this.sort.sortChange.subscribe(() => this.paginator.pageIndex = 0);
+
+        // When list is refresh (sort, page, filters)
+        merge(this.sort.sortChange, this.paginator.page, this.filtersChange)
+            .pipe(
+                takeUntil(this.destroy$),
+                startWith({}),
+                switchMap(() => {
+                    this.isLoadingResults = true;
+                    return this.resultListDatabase!.getRepoIssues(
+                        this.sort.active, this.sort.direction, this.paginator.pageIndex, this.routeUrl, this.filterUrl);
+                }),
+                map(data => {
+                    this.isLoadingResults = false;
+                    data = this.processPostData(data);
+                    this.resultsLength = data.count;
+                    this.headerService.setHeader(this.lang.administration + ' ' + this.lang.historyBatch.toLowerCase(), '', '');
+                    return data.history;
+                }),
+                catchError((err: any) => {
+                    this.notify.handleErrors(err);
+                    this.isLoadingResults = false;
+                    return observableOf([]);
+                })
+            ).subscribe(data => this.data = data);
+    }
+
+    processPostData(data: any) {
+        data.history = data.history.map((item: any) => {
+            return {
+                ...item,
+                total_errors : item.total_errors === null ? 0 : item.total_errors
+            }
+        })
+        return data;
+    }
+
+
+    refreshDao() {
+        this.paginator.pageIndex = 0;
+        this.filtersChange.emit();
+    }
+
+    initFilterListHistory() {
+
+        if (this.filterList === null) {
+            this.filterList = {};
+            this.loadingFilters = true;
+
+            this.http.get("../../rest/history/availableFilters").pipe(
+                map((data: any) => {
+                    data = {};
+                    data.modules = [
+                        {
+                            id : 'retrieveMailsFromSignatoryBook',
+                            label : 'retrieveMailsFromSignatoryBook'
+                        }
+                    ];
+
+                    data.totalErrors = [
+                        {
+                            id : 'errorElement',
+                            label : 'Éléments en erreur'
+                        }
+                    ];
+
+                    return data;
+                }),
+                tap((data: any) => {
+                    Object.keys(data).forEach((filterType: any) => {
+                        if (this.functions.empty(this.filterList[filterType])) {
+                            this.filterList[filterType] = [];
+                            this.filteredList[filterType] = [];
+                        }
+                        data[filterType].forEach((element: any) => {
+                            this.filterList[filterType].push(element);
+                        });
+
+                        this.filteredList[filterType] = this.searchHistory.valueChanges
+                            .pipe(
+                                startWith(''),
+                                map(element => element ? this.filter(element, filterType) : this.filterList[filterType].slice())
+                            );
+                    });
+
+                }),
+                finalize(() => this.loadingFilters = false),
+                catchError((err: any) => {
+                    this.notify.handleSoftErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+
+        }
+    }
+
+
+    filterStartDate() {
+        if (this.functions.empty(this.filterUsed['startDate'])) {
+            this.filterUsed['startDate'] = [];
+        }
+        this.filterUsed['startDate'][0] = {
+            id: this.functions.empty(this.startDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.startDateFilter),
+            label: this.functions.empty(this.startDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.startDateFilter)
+        };
+        this.generateUrlFilter();
+        this.refreshDao();
+    }
+
+    filterEndDate() {
+        if (this.functions.empty(this.filterUsed['endDate'])) {
+            this.filterUsed['endDate'] = [];
+        }
+        this.filterUsed['endDate'][0] = {
+            id: this.functions.empty(this.endDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.endDateFilter, true),
+            label: this.functions.empty(this.endDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.endDateFilter)
+        };
+        this.generateUrlFilter();
+        this.refreshDao();
+    }
+
+    addItemFilter(elem: any) {
+        elem.value.used = true;
+        if (this.functions.empty(this.filterUsed[elem.id])) {
+            this.filterUsed[elem.id] = [];
+        }
+        this.filterUsed[elem.id].push(elem.value);
+        this.generateUrlFilter();
+        this.searchHistory.reset();
+        this.autoCompleteInput.nativeElement.blur();
+        this.refreshDao();
+    }
+
+    removeItemFilter(elem: any, type: string, index: number) {
+        elem.used = false;
+        this.filterUsed[type].splice(index, 1);
+        this.generateUrlFilter();
+        this.refreshDao();
+    }
+
+
+    generateUrlFilter() {
+        this.filterUrl = '';
+        let arrTmpUrl: any[] = [];
+        Object.keys(this.filterUsed).forEach((type: any) => {
+            this.filterUsed[type].forEach((filter: any) => {
+                if (!this.functions.empty(filter.id)) {
+                    if (['startDate', 'endDate'].indexOf(type) > -1) {
+                        arrTmpUrl.push(`${type}=${filter.id}`);
+                    } else {
+                        arrTmpUrl.push(`${type}[]=${filter.id}`);
+                    }
+                }
+            });
+        });
+        if (arrTmpUrl.length > 0) {
+            this.filterUrl = '&' + arrTmpUrl.join('&');
+        }
+    }
+
+    private filter(value: string, type: string): any[] {
+        if (typeof value === 'string') {
+            const filterValue = this.latinisePipe.transform(value.toLowerCase());
+            return this.filterList[type].filter((elem: any) => this.latinisePipe.transform(elem.label.toLowerCase()).includes(filterValue));
+        } else {
+            return this.filterList[type];
+        }
+    }
+}
+
+export interface HistoryList {
+    history: any[];
+    count: number;
+}
+export class HistoryListHttpDao {
+
+    constructor(private http: HttpClient) { }
+
+    getRepoIssues(sort: string, order: string, page: number, href: string, search: string): Observable<HistoryList> {
+
+        let offset = page * 10;
+        const requestUrl = `${href}?limit=10&offset=${offset}&order=${order}&orderBy=${sort}${search}`;
+
+        return this.http.get<HistoryList>(requestUrl);
+    }
+}
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/history-administration.component.html b/src/frontend/app/administration/history/history-administration.component.html
index 8dc4e5f7e4ed7c8a886d72e062470d289f1db9a8..c925ddd0b7a262e93080cad12d51a511980103e8 100755
--- a/src/frontend/app/administration/history/history-administration.component.html
+++ b/src/frontend/app/administration/history/history-administration.component.html
@@ -1,144 +1,156 @@
-<div class="admin-container" [class.admin-is-mobile]="appService.getViewMode()">
-    <mat-sidenav-container autosize class="admin-sidenav-container" >
-        <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56"
-            [opened]="appService.getViewMode() ? false : true">
-            <menu-shortcut></menu-shortcut>
-            <menu-nav></menu-nav>
-        </mat-sidenav>
-        <mat-sidenav-content>
-            <div *ngIf="loading" style="display:flex;height:100%;">
-                <mat-spinner style="margin:auto;"></mat-spinner>
+<mat-sidenav-container autosize class="maarch-container">
+    <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()"
+        [opened]="appService.getViewMode() ? false : true">
+        <header-panel [snavLeft]="snav"></header-panel>
+        <menu-shortcut></menu-shortcut>
+        <menu-nav></menu-nav>
+        <mat-nav-list>
+            <a mat-list-item *ngFor="let menu of subMenus" [class.active]="menu.current" [routerLink]="menu.route">
+                <mat-icon color="primary" mat-list-icon [class]="menu.icon"></mat-icon>
+                <p mat-line>
+                    {{menu.label}}
+                </p>
+            </a>
+        </mat-nav-list>
+        <mat-divider></mat-divider>
+    </mat-sidenav>
+    <mat-sidenav-content>
+        <div class="bg-head">
+            <div class="bg-head-title" [class.customContainerRight]="appService.getViewMode()">
+                <div class="bg-head-title-label">
+                    <header-left [snavLeft]="snav"></header-left>
+                </div>
+                <div class="bg-head-title-tool">
+                    <header-right></header-right>
+                </div>
             </div>
-            <mat-card *ngIf="!loading" class="card-app-content">
-                <mat-tab-group (selectedIndexChange)="_setDataSource($event)">
-                    <mat-tab label="{{lang.history}}" *ngIf="accessHistory">
-                        <mat-card *ngIf="!loading" class="card-app-content">
-                            <div class="alert alert-warning" role="alert" [innerHTML]="lang.limitDataReached" *ngIf="limitExceeded">
-                            </div>
-                            <div class="row">
-                                <div class="col-md-6 col-xs-6">
-                                    <mat-form-field>
-                                        <input matInput (keyup)="applyFilter($event.target.value, 'normal')" placeholder="{{lang.filterBy}}">
-                                    </mat-form-field>
-                                </div>
-                                <div class="col-md-6 col-xs-6">
-                                    <mat-paginator #paginator [length]="100" [hidePageSize]="true" [pageSize]="10">
-                                    </mat-paginator>
-                                </div>
-                            </div>
-
-                            <div class="row">
-                                <div class="col-sm-6" style="padding-top:10px;">
-                                    <mat-form-field>
-                                        <input matInput [(ngModel)]="startDate" [max]="endDate" [matDatepicker]="pickerStart" placeholder="{{lang.since}}" (dateChange)="refreshHistory('normal')"
-                                            (focus)="pickerStart.open()">
-                                        <mat-datepicker-toggle matSuffix [for]="pickerStart"></mat-datepicker-toggle>
-                                        <mat-datepicker #pickerStart touchUi="true" [startAt]="startDate"></mat-datepicker>
-                                    </mat-form-field>
-
-                                </div>
-                                <div class="col-sm-6" style="padding-top:10px;">
-                                    <mat-form-field>
-                                        <input matInput [(ngModel)]="endDate" [min]="startDate" [matDatepicker]="pickerEnd" placeholder="{{lang.until}}" (dateChange)="refreshHistory('normal')"
-                                            (focus)="pickerEnd.open()">
-                                        <mat-datepicker-toggle matSuffix [for]="pickerEnd"></mat-datepicker-toggle>
-                                        <mat-datepicker #pickerEnd touchUi="true" [startAt]="endDate"></mat-datepicker>
-                                    </mat-form-field>
-                                </div>
-                            </div>
-                            <mat-table #table [dataSource]="dataSource" matSort matSortActive="event_date" #sort="matSort" matSortDirection="desc">
-                                <ng-container matColumnDef="event_date">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:1;">{{lang.date}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" style="flex:1;">{{element.event_date | date : "dd/MM/y HH:mm"}}</mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="event_type">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()">{{lang.event}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()"> {{element.event_type}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="user_id">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()">{{lang.user}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()"> {{element.user_id}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="info">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:3;">{{lang.description}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" style="flex:3;"> {{element.info}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="remote_ip">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()">{{lang.ip}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" style="flex:1;" [class.hide-for-mobile]="appService.getViewMode()"> {{element.remote_ip}} </mat-cell>
-                                </ng-container>
-                                <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
-                                <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
-                            </mat-table>
-                            <div class="mat-paginator" style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;">{{data.length}} {{lang.entries}}</div>
-                        </mat-card>
-                    </mat-tab>
-                    <mat-tab label="{{lang.historyBatch}}" *ngIf="accessBatchHistory">
-                        <mat-card *ngIf="!loading" class="card-app-content">
-                            <div class="alert alert-warning" role="alert" [innerHTML]="lang.limitDataReached" *ngIf="limitExceeded"></div>
-                            <div class="row">
-                                <div class="col-md-6 col-xs-6">
-                                    <mat-form-field>
-                                        <input matInput (keyup)="applyFilter($event.target.value, 'batch')" placeholder="{{lang.filterBy}}">
-                                    </mat-form-field>
-                                </div>
-                                <div class="col-md-6 col-xs-6">
-                                    <mat-paginator #batchPaginator [length]="100" [hidePageSize]="true" [pageSize]="10">
-                                    </mat-paginator>
-                                </div>
-                            </div>
-                            <div class="row">
-                                <div class="col-sm-6" style="padding-top:10px;">
-                                    <mat-form-field>
-                                        <input matInput [(ngModel)]="batchStartDate" [max]="batchEndDate" [matDatepicker]="pickerStart" placeholder="{{lang.since}}"
-                                            (dateChange)="refreshHistory('batch')" (focus)="pickerStart.open()">
-                                        <mat-datepicker-toggle matSuffix [for]="pickerStart"></mat-datepicker-toggle>
-                                        <mat-datepicker #pickerStart touchUi="true" [startAt]="batchStartDate"></mat-datepicker>
-                                    </mat-form-field>
-                                </div>
-                                <div class="col-sm-6" style="padding-top:10px;">
-                                    <mat-form-field>
-                                        <input matInput [(ngModel)]="batchEndDate" [min]="batchStartDate" [matDatepicker]="pickerEnd" placeholder="{{lang.until}}"
-                                            (dateChange)="refreshHistory('batch')" (focus)="pickerEnd.open()">
-                                        <mat-datepicker-toggle matSuffix [for]="pickerEnd"></mat-datepicker-toggle>
-                                        <mat-datepicker #pickerEnd touchUi="true" [startAt]="batchEndDate"></mat-datepicker>
-                                    </mat-form-field>
-                                </div>
-                            </div>
-                            <mat-table #table [dataSource]="batchDataSource" #batchSort="matSort" matSort matSortActive="event_date" matSortDirection="desc">
-                                <ng-container matColumnDef="event_date">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.date}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element">{{element.event_date | date : "dd/MM/y HH:mm"}}</mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="total_processed">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.totalProcessed}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.total_processed}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="total_errors">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.totalErrors}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.total_errors}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="info">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.description}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element"> {{element.info}} </mat-cell>
-                                </ng-container>
-                                <ng-container matColumnDef="module_name">
-                                    <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.module}}</mat-header-cell>
-                                    <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.module_name}} </mat-cell>
+            <div class="bg-head-content" [class.fullContainer]="appService.getViewMode()">
+                <div style="display: grid;grid-template-columns: repeat(2, 1fr);grid-gap: 10px;width: 100%;">
+                    <mat-form-field (click)="startPicker.open()" style="cursor:pointer;" class="dateFilter">
+                        <mat-label style="color:white;">{{lang.since}}
+                        </mat-label>
+                        <input [(ngModel)]="startDateFilter" matInput [matDatepicker]="startPicker"
+                            [placeholder]="lang.since" [max]="endDateFilter" readonly style="cursor:pointer;"
+                            (dateChange)="filterStartDate()">
+                        <mat-datepicker-toggle matSuffix [for]="startPicker" *ngIf="!startDateFilter">
+                        </mat-datepicker-toggle>
+                        <mat-datepicker [touchUi]="appService.getViewMode()" #startPicker>
+                        </mat-datepicker>
+                        <button mat-button color="warn" matSuffix mat-icon-button *ngIf="startDateFilter"
+                            (click)="$event.stopPropagation();startDateFilter = '';filterStartDate()" [title]="lang.eraseValue">
+                            <mat-icon color="warn" class="fa fa-calendar-times">
+                            </mat-icon>
+                        </button>
+                    </mat-form-field>
+                    <mat-form-field (click)="endPicker.open()" style="cursor:pointer;" class="dateFilter">
+                        <mat-label style="color:white;">{{lang.until}}
+                        </mat-label>
+                        <input [(ngModel)]="endDateFilter" matInput [matDatepicker]="endPicker"
+                            [placeholder]="lang.until" [min]="startDateFilter" readonly style="cursor:pointer;"
+                            (dateChange)="filterEndDate()">
+                        <mat-datepicker-toggle matSuffix [for]="endPicker" *ngIf="!endDateFilter">
+                        </mat-datepicker-toggle>
+                        <mat-datepicker [touchUi]="appService.getViewMode()" #endPicker>
+                        </mat-datepicker>
+                        <button mat-button color="warn" matSuffix mat-icon-button *ngIf="endDateFilter"
+                            (click)="$event.stopPropagation();endDateFilter = '';filterEndDate()" [title]="lang.eraseValue">
+                            <mat-icon color="warn" class="fa fa-calendar-times">
+                            </mat-icon>
+                        </button>
+                    </mat-form-field>
+                </div>
+            </div>
+        </div>
+        <div class="container" [class.fullContainer]="appService.getViewMode()">
+            <div class="container-content">
+                <div class="example-loading-shade" *ngIf="isLoadingResults">
+                    <mat-spinner *ngIf="isLoadingResults"></mat-spinner>
+                </div>
+                <div class="table-head">
+                    <div class="table-head-result">
+                        <mat-form-field floatLabel="never" style="font-size: 13px;">
+                            <input type="text" #autoCompleteInput [matAutocomplete]="auto" [placeholder]="lang.filterBy"
+                                matInput [formControl]="searchHistory" (click)="$event.stopPropagation()"
+                                maxlength="128">
+                            <mat-autocomplete #auto="matAutocomplete" (optionSelected)="addItemFilter($event.option)"
+                                (opened)="initFilterListHistory()">
+                                <mat-option disabled *ngIf="loadingFilters">
+                                    <div style="display: flex;justify-content: center;">
+                                        <mat-spinner diameter="35"></mat-spinner>
+                                    </div>
+                                </mat-option>
+                                <ng-container *ngIf="filterList!==null && !loadingFilters">
+                                    <ng-container *ngFor="let keyVal of filterList | keyvalue">
+                                        <mat-optgroup *ngIf="(filteredList[keyVal.key] | async)?.length > 0"
+                                            [label]="lang[keyVal.key]" class="filterList">
+                                            <mat-option [id]="keyVal.key"
+                                                [style.color]="!filter.used ? filterColor[keyVal.key] : ''"
+                                                *ngFor="let filter of filteredList[keyVal.key] | async | sortBy : 'label'"
+                                                [value]="filter" [disabled]="filter.used">
+                                                {{filter.label}}
+                                            </mat-option>
+                                        </mat-optgroup>
+                                    </ng-container>
                                 </ng-container>
-                                <mat-header-row *matHeaderRowDef="batchDisplayedColumns"></mat-header-row>
-                                <mat-row *matRowDef="let row; columns: batchDisplayedColumns;"></mat-row>
-                            </mat-table>
-                        </mat-card>
-                    </mat-tab>
-                </mat-tab-group>
-            </mat-card>
-        </mat-sidenav-content>
-        <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56"
-            position='end' [opened]="appService.getViewMode() ? false : false">
-            <mat-nav-list>
-                <h3 mat-subheader>Actions</h3>
-            </mat-nav-list>
-        </mat-sidenav>
-    </mat-sidenav-container>
-</div>
\ No newline at end of file
+
+                            </mat-autocomplete>
+                        </mat-form-field>
+                    </div>
+                    <div class="table-head-tool">
+                        <mat-paginator #paginatorHistoryList [length]="resultsLength" [hidePageSize]="true"
+                            [pageSize]="10" class="paginatorResultList"></mat-paginator>
+                    </div>
+                </div>
+                <div style="height:90%;overflow:auto;position:absolute;width:100%;">
+                    <div class="filterBadges">
+                        <ng-container *ngFor="let keyVal of filterUsed | keyvalue">
+                            <ng-container *ngIf="['startDate','endDate'].indexOf(keyVal.key) === -1">
+                                <span *ngFor="let filter of filterUsed[keyVal.key]; let i=index;" class="label"
+                                    [style.background]="filterColor[keyVal.key]" [title]="lang[keyVal.key]"
+                                    (click)="removeItemFilter(filter,keyVal.key,i)">{{filter.label}}
+                                    <i class="fa fa-times-circle"></i></span>
+                            </ng-container>
+                        </ng-container>
+                    </div>
+                    <mat-table id="history-list" #tableHistoryListSort="matSort" [dataSource]="data" matSort
+                        matSortActive="event_date" matSortDirection="desc" style="width:100%;">
+                        <ng-container matColumnDef="event_date">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.event}}</mat-header-cell>
+                            <mat-cell mat-cell *matCellDef="let element"
+                                [title]="element.event_date | fullDate">
+                                {{element.event_date  | timeAgo : 'full' | ucfirst}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="userLabel">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.user | ucfirst}}</mat-header-cell>
+                            <mat-cell *matCellDef="let element">
+                                {{element.userLabel}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="info">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header
+                                style="flex: 2;">{{lang.information}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element"
+                                style="flex: 2;">
+                                {{element.info}} </mat-cell>
+                        </ng-container>
+                        <ng-container matColumnDef="remote_ip">
+                            <mat-header-cell *matHeaderCellDef mat-sort-header
+                               >{{lang.ip}}
+                            </mat-header-cell>
+                            <mat-cell *matCellDef="let element">
+                                {{element.remote_ip}} </mat-cell>
+                        </ng-container>
+                        <mat-header-row *matHeaderRowDef="displayedColumnsHistory"></mat-header-row>
+                        <mat-row *matRowDef="let row; columns: displayedColumnsHistory;">
+                        </mat-row>
+                    </mat-table>
+                    <div class="mat-paginator"
+                        style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;">
+                        {{resultsLength}} {{lang.elements}}</div>
+                </div>
+                <div class="table-head">
+                </div>
+            </div>
+        </div>
+    </mat-sidenav-content>
+</mat-sidenav-container>
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/history-administration.component.scss b/src/frontend/app/administration/history/history-administration.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..d72907097a8ff943af1669f7434e98f0ba62e4e7
--- /dev/null
+++ b/src/frontend/app/administration/history/history-administration.component.scss
@@ -0,0 +1,54 @@
+@import '../../../css/vars.scss';
+
+.active,
+.active:hover,
+.active:active,
+.active:focus {
+    color: $primary;
+    border-left: solid 5px $primary;
+    background: rgba($primary, 0.14);
+}
+
+
+.paginatorResultList {
+    ::ng-deep.mat-paginator-range-label {
+        justify-content: flex-end;
+        display: flex;
+    }
+}
+
+.filterList {
+    ::ng-deep.mat-optgroup-label {
+        color: $primary;
+        position: sticky;
+        top: 0px;
+        background: white !important;
+        z-index: 1;
+    }
+}
+
+.label {
+    cursor: pointer;
+    margin: 5px;
+}
+
+.bg-head-content {
+    ::ng-deep .mat-focused .mat-form-field-label {
+        /*change color of label*/
+        color: white !important;
+    }
+
+    ::ng-deep.mat-form-field-underline {
+        /*change color of underline*/
+        background-color: white !important;
+    }
+
+    ::ng-deep.mat-form-field-ripple {
+        /*change color of underline when focused*/
+        background-color: white !important;
+    }
+
+    .mat-icon,.mat-datepicker-toggle {
+        color:white;
+    }
+}
\ No newline at end of file
diff --git a/src/frontend/app/administration/history/history-administration.component.ts b/src/frontend/app/administration/history/history-administration.component.ts
index 1c898e27e561629e505c7efabc8e83007e4a28c4..b17a5ac2d5f21572394d4568479d71f6920c4d7b 100755
--- a/src/frontend/app/administration/history/history-administration.component.ts
+++ b/src/frontend/app/administration/history/history-administration.component.ts
@@ -1,184 +1,293 @@
-import { Component, OnInit, ViewChild }  from '@angular/core';
-import { HttpClient }                                       from '@angular/common/http';
-import { MatPaginator } from '@angular/material/paginator';
+import { Component, OnInit, ViewChild, EventEmitter, ElementRef } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { LANG } from '../../translate.component';
+import { NotificationService } from '../../notification.service';
+import { HeaderService } from '../../../service/header.service';
 import { MatSidenav } from '@angular/material/sidenav';
-import { MatSort } from '@angular/material/sort';
-import { MatTableDataSource } from '@angular/material/table';
-import { LANG }                                             from '../../translate.component';
-import { HeaderService }        from '../../../service/header.service';
 import { AppService } from '../../../service/app.service';
-
-declare function $j(selector: any): any;
+import { Observable, merge, Subject, of as observableOf, of } from 'rxjs';
+import { MatPaginator, MatSort, MatDialog } from '@angular/material';
+import { takeUntil, startWith, switchMap, map, catchError, filter, exhaustMap, tap, debounceTime, distinctUntilChanged, finalize } from 'rxjs/operators';
+import { ConfirmComponent } from '../../../plugins/modal/confirm.component';
+import { FormControl } from '@angular/forms';
+import { FunctionsService } from '../../../service/functions.service';
+import { LatinisePipe } from 'ngx-pipes';
 
 @Component({
+    selector: 'contact-list',
     templateUrl: "history-administration.component.html",
+    styleUrls: ['history-administration.component.scss'],
     providers: [AppService]
 })
 export class HistoryAdministrationComponent implements OnInit {
 
-    @ViewChild('snav', { static: true }) public  sidenavLeft   : MatSidenav;
-    @ViewChild('snav2', { static: true }) public sidenavRight  : MatSidenav;
+    @ViewChild('snav', { static: true }) public sidenavLeft: MatSidenav;
+    @ViewChild('snav2', { static: true }) public sidenavRight: MatSidenav;
 
-    lang                            : any       = LANG;
-    loading                         : boolean   = false;
-    limitExceeded                   : boolean   = false;
-    batchLimitExceeded              : boolean   = false;
+    lang: any = LANG;
+    loading: boolean = false;
 
-    data                            : any[]     = [];
-    batchData                       : any[]     = [];
-    startDate                       : Date      = new Date();
-    endDate                         : Date      = new Date();
-    batchStartDate                  : Date      = new Date();
-    batchEndDate                    : Date      = new Date();
+    filtersChange = new EventEmitter();
 
+    data: any;
 
-    dataSource          = new MatTableDataSource(this.data);
-    batchDataSource     = new MatTableDataSource(this.batchData);
-    displayedColumns    = ['event_date', 'event_type', 'user_id', 'info', 'remote_ip'];
-    batchDisplayedColumns = ['event_date', 'total_processed', 'total_errors', 'info', 'module_name'];
+    displayedColumnsHistory: string[] = ['event_date', 'userLabel', 'info', 'remote_ip'];
 
-    accessBatchHistory              : boolean   = true;
-    accessHistory                   : boolean   = true;
+    isLoadingResults = true;
+    routeUrl: string = '../../rest/history';
+    resultListDatabase: HistoryListHttpDao | null;
+    resultsLength = 0;
 
+    searchHistory = new FormControl();
+    startDateFilter: any = '';
+    endDateFilter: any = '';
+    filterUrl: string = '';
+    filterList: any = null;
+    filteredList: any = {};
+    filterUsed: any = {};
 
-    @ViewChild('paginator', { static: false }) paginator: MatPaginator;
-    @ViewChild('batchPaginator', { static: false }) batchPaginator: MatPaginator;
-    @ViewChild('sort', { static: false }) sort: MatSort;
-    @ViewChild('batchSort', { static: false }) batchSort: MatSort;
-    applyFilter(filterValue: string, historyType : string) {
-        filterValue = filterValue.trim();
-        filterValue = filterValue.toLowerCase();
-        if(historyType == 'normal'){
-            this.dataSource.filter = filterValue;
-        } else {
-            this.batchDataSource.filter = filterValue
-        }        
-    }
+    filterColor = {
+        startDate: '#b5cfd8',
+        endDate: '#7393a7',
+        actions: '#7d5ba6',
+        systemActions: '#d6716f',
+        users: '#009dc5',
+    };
+
+    loadingFilters: boolean = true;
+
+    @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+    @ViewChild('tableHistoryListSort', { static: true }) sort: MatSort;
+    @ViewChild('autoCompleteInput', { static: true }) autoCompleteInput: ElementRef;
+
+    private destroy$ = new Subject<boolean>();
+
+    subMenus: any[] = [
+        {
+            icon: 'fa fa-history',
+            route: '/administration/history',
+            label: this.lang.history,
+            current: true
+        },
+        {
+            icon: 'fa fa-history',
+            route: '/administration/history-batch',
+            label: this.lang.historyBatch,
+            current: false
+        }
+    ];
 
     constructor(
-        public http: HttpClient, 
+        public http: HttpClient,
+        private notify: NotificationService,
         private headerService: HeaderService,
-        public appService: AppService
-    ) {
-        $j("link[href='merged_css.php']").remove();
+        public appService: AppService,
+        public dialog: MatDialog,
+        public functions: FunctionsService,
+        private latinisePipe: LatinisePipe) { }
 
-        this.startDate.setHours(0,0,0,0);
-        this.startDate.setMonth(this.endDate.getMonth()-1);
-        this.endDate.setHours(23,59,59,59);
+    ngOnInit(): void {
+        this.loading = true;
+        this.initHistoryList();
+    }
+
+    initHistoryList() {
+        this.resultListDatabase = new HistoryListHttpDao(this.http);
+        this.paginator.pageIndex = 0;
+        this.sort.active = 'event_date';
+        this.sort.direction = 'desc';
+        this.sort.sortChange.subscribe(() => this.paginator.pageIndex = 0);
 
-        this.batchStartDate.setHours(0,0,0,0);
-        this.batchStartDate.setMonth(this.endDate.getMonth()-1);
-        this.batchEndDate.setHours(23,59,59,59);
+        // When list is refresh (sort, page, filters)
+        merge(this.sort.sortChange, this.paginator.page, this.filtersChange)
+            .pipe(
+                takeUntil(this.destroy$),
+                startWith({}),
+                switchMap(() => {
+                    this.isLoadingResults = true;
+                    return this.resultListDatabase!.getRepoIssues(
+                        this.sort.active, this.sort.direction, this.paginator.pageIndex, this.routeUrl, this.filterUrl);
+                }),
+                map(data => {
+                    this.isLoadingResults = false;
+                    data = this.processPostData(data);
+                    this.resultsLength = data.count;
+                    this.headerService.setHeader(this.lang.administration + ' ' + this.lang.history.toLowerCase(), '', '');
+                    return data.history;
+                }),
+                catchError((err: any) => {
+                    this.notify.handleErrors(err);
+                    this.isLoadingResults = false;
+                    return observableOf([]);
+                })
+            ).subscribe(data => this.data = data);
     }
 
-    ngOnInit(): void {
-        this.headerService.setHeader(this.lang.administration + ' ' + this.lang.history);
-        window['MainHeaderComponent'].setSnav(this.sidenavLeft);
-        window['MainHeaderComponent'].setSnavRight(null);
+    processPostData(data: any) {
+        data.history = data.history.map((item: any) => {
+            return {
+                ...item,
+                userLabel : !this.functions.empty(item.userLabel) ? item.userLabel : this.lang.userDeleted
+            }
+        })
+        return data;
+    }
 
-        this.loading = true;
 
-        this.http.get('../../rest/history', {params: {"startDate" : (this.startDate.getTime() / 1000).toString(), "endDate" : (this.endDate.getTime() / 1000).toString()}})
-            .subscribe((data: any) => {
-                this.data = data['history'];
-                this.limitExceeded = data['limitExceeded'];
-                this.loading = false;
-                setTimeout(() => {
-                    this.accessHistory = true;
-                    this.dataSource = new MatTableDataSource(this.data);
-                    this.dataSource.paginator = this.paginator;
-                    this.dataSource.sort = this.sort;
-                }, 0);
-            }, (data: any) => {
-                if(data['error'].errors == 'Service forbidden'){
-                        this.loading = false;
-                        this.accessHistory = false;
-                } else {
-                    location.href = "index.php";
-                }                
-            });
+    refreshDao() {
+        this.paginator.pageIndex = 0;
+        this.filtersChange.emit();
+    }
 
-        this.http.get('../../rest/batchHistories', {params: {"startDate" : (this.batchStartDate.getTime() / 1000).toString(), "endDate" : (this.batchEndDate.getTime() / 1000).toString()}})
-            .subscribe((data: any) => {
-                this.batchData = data['batchHistories'];
-                this.batchLimitExceeded = data['limitExceeded'];
-                this.loading = false;
-                setTimeout(() => {
-                    this.accessBatchHistory = true;
-                    this.batchDataSource = new MatTableDataSource(this.batchData);
-                    this.batchDataSource.paginator = this.batchPaginator;
-                    this.batchDataSource.sort = this.batchSort;
-                }, 0);
-            }, (data: any) => {
-                if(data['error'].errors == 'Service forbidden'){
-                        this.loading = false;
-                        this.accessBatchHistory = false;
-                } else {
-                    location.href = "index.php";
-                }
-                
-            });
-            
+    initFilterListHistory() {
+
+        if (this.filterList === null) {
+            this.filterList = {};
+            this.loadingFilters = true;
+            this.http.get("../../rest/history/availableFilters").pipe(
+                map((data: any) => {
+                    let deletedActions = data.actions.filter((action: any) => action.label === null).map((action: any) => action.id);
+                    let deletedUser = data.users.filter((user: any) => user.label === null).map((user: any) => user.login);
+
+                    data.actions = data.actions.filter((action: any) => action.label !== null);
+                    if (deletedActions.length > 0) {
+                        data.actions.push({
+                            id: deletedActions,
+                            label: this.lang.actionDeleted
+                        });
+                    }
+
+                    data.users = data.users.filter((user: any) => user.label !== null);
+
+                    if (deletedUser.length > 0) {
+                        data.users.push({
+                            id: deletedUser,
+                            label: this.lang.userDeleted
+                        });
+                    }
+
+                    data.systemActions = data.systemActions.map((syst: any) => {
+                        return {
+                            id: syst.id,
+                            label: this.lang[syst.id]
+                        }
+                    });
+                    return data;
+                }),
+                tap((data: any) => {
+                    Object.keys(data).forEach((filterType: any) => {
+                        if (this.functions.empty(this.filterList[filterType])) {
+                            this.filterList[filterType] = [];
+                            this.filteredList[filterType] = [];
+                        }
+                        data[filterType].forEach((element: any) => {
+                            this.filterList[filterType].push(element);
+                        });
+
+                        this.filteredList[filterType] = this.searchHistory.valueChanges
+                            .pipe(
+                                startWith(''),
+                                map(element => element ? this.filter(element, filterType) : this.filterList[filterType].slice())
+                            );
+                    });
+
+                }),
+                finalize(() => this.loadingFilters = false),
+                catchError((err: any) => {
+                    this.notify.handleSoftErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+
+        }
     }
 
-    ngAfterViewInit() {
-        this.batchDataSource.paginator = this.batchPaginator;
-        this.batchDataSource.sort = this.batchSort;
+    filterStartDate() {
+        if (this.functions.empty(this.filterUsed['startDate'])) {
+            this.filterUsed['startDate'] = [];
+        }
+        this.filterUsed['startDate'][0] = {
+            id: this.functions.empty(this.startDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.startDateFilter),
+            label: this.functions.empty(this.startDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.startDateFilter)
+        };
+        this.generateUrlFilter();
+        this.refreshDao();
     }
-    
-    _setDataSource(indexNumber : any) {
-        setTimeout(() => {
-            switch (indexNumber) {
-                case 0:
-                  !this.dataSource.paginator ? this.dataSource.paginator = this.paginator : null;
-                  !this.dataSource.sort ? this.dataSource.sort = this.sort : null;
-                  break;
-                case 1:
-                  !this.batchDataSource.paginator ? this.batchDataSource.paginator = this.batchPaginator : null;
-                  !this.batchDataSource.sort ? this.batchDataSource.sort = this.batchSort : null;
-            }
-        });
+
+    filterEndDate() {
+        if (this.functions.empty(this.filterUsed['endDate'])) {
+            this.filterUsed['endDate'] = [];
+        }
+        this.filterUsed['endDate'][0] = {
+            id: this.functions.empty(this.endDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.endDateFilter, true),
+            label: this.functions.empty(this.endDateFilter) ? '' : this.functions.formatDateObjectToDateString(this.endDateFilter)
+        };
+        this.generateUrlFilter();
+        this.refreshDao();
     }
 
-    refreshHistory(historyType : string) {
-        if (historyType == 'normal') {
-            this.startDate.setHours(0,0,0,0);
-            this.endDate.setHours(23,59,59,59);
-            this.http.get('../../rest/history', {params: {"startDate" : (this.startDate.getTime() / 1000).toString(), "endDate" : (this.endDate.getTime() / 1000).toString()}})
-                .subscribe((data: any) => {
-                    this.data = data['history'];
-                    this.limitExceeded = data['limitExceeded'];
-                    this.loading = false;
-                    setTimeout(() => {
-                        this.dataSource = new MatTableDataSource(this.data);
-                        this.dataSource.paginator = this.paginator;
-                        this.dataSource.sort = this.sort;
-                    }, 0);
-                }, () => {
-                    location.href = "index.php";
-                });
-        } else {
-            this.batchStartDate.setHours(0,0,0,0);
-            this.batchEndDate.setHours(23,59,59,59);
-            this.http.get('../../rest/batchHistories', {params: {"startDate" : (this.batchStartDate.getTime() / 1000).toString(), "endDate" : (this.batchEndDate.getTime() / 1000).toString()}})
-                .subscribe((data: any) => {
-                    this.batchData = data['batchHistories'];
-                    this.batchLimitExceeded = data['limitExceeded'];
-                    this.loading = false;
-                    setTimeout(() => {
-                        this.accessBatchHistory = true;
-                        this.batchDataSource = new MatTableDataSource(this.batchData);
-                        this.batchDataSource.paginator = this.batchPaginator;
-                        this.batchDataSource.sort = this.batchSort;
-                    }, 0);
-                }, (data: any) => {
-                    if(data['error'].errors == 'Service forbidden'){
-                        this.loading = false;
-                        this.accessBatchHistory = false;
+    addItemFilter(elem: any) {
+        elem.value.used = true;
+        if (this.functions.empty(this.filterUsed[elem.id])) {
+            this.filterUsed[elem.id] = [];
+        }
+        this.filterUsed[elem.id].push(elem.value);
+        this.generateUrlFilter();
+        this.searchHistory.reset();
+        this.autoCompleteInput.nativeElement.blur();
+        this.refreshDao();
+    }
+
+    removeItemFilter(elem: any, type: string, index: number) {
+        elem.used = false;
+        this.filterUsed[type].splice(index, 1);
+        this.generateUrlFilter();
+        this.refreshDao();
+    }
+
+
+    generateUrlFilter() {
+        this.filterUrl = '';
+        let arrTmpUrl: any[] = [];
+        Object.keys(this.filterUsed).forEach((type: any) => {
+            this.filterUsed[type].forEach((filter: any) => {
+                if (!this.functions.empty(filter.id)) {
+                    if (['startDate', 'endDate'].indexOf(type) > -1) {
+                        arrTmpUrl.push(`${type}=${filter.id}`);
                     } else {
-                        location.href = "index.php";
+                        arrTmpUrl.push(`${type}[]=${filter.id}`);
                     }
-                });
+                }
+            });
+        });
+        if (arrTmpUrl.length > 0) {
+            this.filterUrl = '&' + arrTmpUrl.join('&');
+        }
+    }
+
+    private filter(value: string, type: string): any[] {
+        if (typeof value === 'string') {
+            const filterValue = this.latinisePipe.transform(value.toLowerCase());
+            return this.filterList[type].filter((elem: any) => this.latinisePipe.transform(elem.label.toLowerCase()).includes(filterValue));
+        } else {
+            return this.filterList[type];
         }
     }
 }
+
+export interface HistoryList {
+    history: any[];
+    count: number;
+}
+export class HistoryListHttpDao {
+
+    constructor(private http: HttpClient) { }
+
+    getRepoIssues(sort: string, order: string, page: number, href: string, search: string): Observable<HistoryList> {
+
+        let offset = page * 10;
+        const requestUrl = `${href}?limit=10&offset=${offset}&order=${order}&orderBy=${sort}${search}`;
+
+        return this.http.get<HistoryList>(requestUrl);
+    }
+}
\ No newline at end of file
diff --git a/src/frontend/app/administration/home/administration.component.html b/src/frontend/app/administration/home/administration.component.html
index a37c47a9ab02caef7778a77fbcf1033bd3a027bf..7fa9df6d118afee825de57797536e1642eee6c45 100644
--- a/src/frontend/app/administration/home/administration.component.html
+++ b/src/frontend/app/administration/home/administration.component.html
@@ -26,7 +26,7 @@
                     <mat-spinner style="margin:auto;"></mat-spinner>
                 </div>
                 <div *ngIf="!loading" class="row adminArea">
-                    <div class="col-md-6 adminArea_1" *ngIf="organisationServices">
+                    <div class="col-md-6 col-sm-12 col-xs-12 adminArea_1" *ngIf="organisationServices">
                         <div class="adminArea-label">{{lang.organization}}</div>
                         <button class="col-md-4 col-xs-6 adminArea-button"
                             mat-button color="primary" matTooltip="{{modService.comment}}" *ngFor="let modService of organisationServices | sortBy : 'label'"
@@ -35,7 +35,7 @@
                             <br />{{modService.label}}</button>
                     </div>
 
-                    <div class="col-md-6 adminArea_2" *ngIf="productionServices">
+                    <div class="col-md-6 col-sm-12 col-xs-12 adminArea_2" *ngIf="productionServices">
                         <div class="adminArea-label">{{lang.production}}</div>
                         <button class="col-md-4 col-xs-6 adminArea-button"
                             mat-button color="primary" matTooltip="{{modService.comment}}" *ngFor="let modService of productionServices | sortBy : 'label'"
@@ -43,7 +43,7 @@
                             <i class="{{modService.style}} fa-4x"></i>
                             <br />{{modService.label}}</button>
                     </div>
-                    <div class="col-md-6 adminArea_3" *ngIf="classementServices">
+                    <div class="col-md-6 col-sm-12 col-xs-12 adminArea_3" *ngIf="classementServices">
                         <div class="adminArea-label">{{lang.classifying}}</div>
                         <button class="col-md-4 col-xs-6 adminArea-button"
                             mat-button color="primary" matTooltip="{{modService.comment}}" *ngFor="let modService of classementServices | sortBy : 'label'"
@@ -51,7 +51,7 @@
                             <i class="{{modService.style}} fa-4x"></i>
                             <br />{{modService.label}}</button>
                     </div>
-                    <div class="col-md-6 adminArea_4" *ngIf="supervisionServices">
+                    <div class="col-md-6 col-sm-12 col-xs-12 adminArea_4" *ngIf="supervisionServices">
                         <div class="adminArea-label">{{lang.supervision}}</div>
                         <ng-container>
                             <button class="col-md-4 col-xs-6 adminArea-button"
diff --git a/src/frontend/app/avis/avis-workflow.component.html b/src/frontend/app/avis/avis-workflow.component.html
index 0f2e86ccf285c7eaac5460aab19c9b768d51e4d4..76af5f1360e215c19b78e7d33598dad469ceef69 100644
--- a/src/frontend/app/avis/avis-workflow.component.html
+++ b/src/frontend/app/avis/avis-workflow.component.html
@@ -1,6 +1,6 @@
 <mat-list *ngIf="!loading">
     <mat-form-field appearance="outline" *ngIf="adminMode && !linkedToMaarchParapheur">
-        <input type="text" matInput placeholder="Ajouter des personnes" id="searchAvisUserInput"
+        <input type="text" #searchAvisUserInput matInput placeholder="Ajouter des personnes" id="searchAvisUserInput"
             [formControl]="searchAvisUser" [matAutocomplete]="autoGroup">
         <mat-autocomplete #autoGroup="matAutocomplete" (optionSelected)="addItemToWorkflow($event.option.value)"
             (opened)="initFilterAvisModelList()">
diff --git a/src/frontend/app/avis/avis-workflow.component.ts b/src/frontend/app/avis/avis-workflow.component.ts
index 1ca989e78dad4f394cb5955858ba0be60f0c06e6..534b3a723e4a5c2d7dfde5b26afd817e98997417 100644
--- a/src/frontend/app/avis/avis-workflow.component.ts
+++ b/src/frontend/app/avis/avis-workflow.component.ts
@@ -12,8 +12,6 @@ import { MatDialog } from '@angular/material';
 import { AddAvisModelModalComponent } from './addAvisModel/add-avis-model-modal.component';
 import { ConfirmComponent } from '../../plugins/modal/confirm.component';
 
-declare function $j(selector: any): any;
-
 @Component({
     selector: 'app-avis-workflow',
     templateUrl: 'avis-workflow.component.html',
@@ -49,7 +47,7 @@ export class AvisWorkflowComponent implements OnInit {
 
     @Input('mode') mode: 'parallel' | 'circuit' = 'circuit';
 
-    @ViewChild('searchAvisUserInput', { static: true }) searchAvisUserInput: ElementRef;
+    @ViewChild('searchAvisUserInput', { static: false }) searchAvisUserInput: ElementRef;
 
     searchAvisUser = new FormControl();
 
@@ -432,6 +430,7 @@ export class AvisWorkflowComponent implements OnInit {
                 difflist_type: this.mode === 'circuit' ? 'AVIS_CIRCUIT' : 'entity_id'
             });
             this.searchAvisUser.reset();
+            this.searchAvisUserInput.nativeElement.blur();
         } else if (item.type === 'entity') {
             this.http.get(`../../rest/listTemplates/${item.id}`).pipe(
                 tap((data: any) => {
@@ -448,6 +447,7 @@ export class AvisWorkflowComponent implements OnInit {
                         })
                     );
                     this.searchAvisUser.reset();
+                    this.searchAvisUserInput.nativeElement.blur();
                 })
             ).subscribe();
         }
diff --git a/src/frontend/app/folder/document-list/folder-document-list.component.html b/src/frontend/app/folder/document-list/folder-document-list.component.html
index 5514a09d88af49da3c365c469d4983557358df6f..481c1d5294da7e2e6698e664f2be6ba9ed702a72 100644
--- a/src/frontend/app/folder/document-list/folder-document-list.component.html
+++ b/src/frontend/app/folder/document-list/folder-document-list.component.html
@@ -72,11 +72,11 @@
                             {{lang.selected}}</small>
                     </div>
                     <div class="table-head-tool">
-                        <span style="float:right;height: 56px;margin-top: 5px;">
+                        <span>
                             <mat-paginator #paginatorResultList [length]="resultsLength" [pageSizeOptions]="[10, 25, 50, 100, 150]"
                                 class="paginatorResultList"></mat-paginator>
                         </span>
-                        <span style="float:right;height: 56px;margin-top: 11px;">
+                        <span>
                             <app-folder-action-list #actionsList [contextMode]="false" [currentFolderInfo]="folderInfo"
                                 [totalRes]="allResInBasket.length" [selectedRes]="selectedRes"
                                 (refreshEvent)="refreshDaoAfterAction()"
@@ -195,7 +195,7 @@
         <div *ngIf="innerHtml" [matTooltip]="currentChrono" [innerHTML]="innerHtml"
             style="height: 100%;overflow: hidden;"></div>
 
-        <div style="display:flex;">
+        <div style="display:flex;position: sticky;top: 0px;z-index: 2;">
             <button mat-icon-button (click)="snav2.close()" style="font-size: 20px;color:#666;">
                 <mat-icon class="fa fa-arrow-right"></mat-icon>
             </button>
diff --git a/src/frontend/app/home/followed-list/followed-document-list.component.html b/src/frontend/app/home/followed-list/followed-document-list.component.html
index f48fd2a4f04569c4e8d3a3834fd4fa772a2de369..147df8f3ed198c02fe92a0af4cb9d4b2291ed5c0 100644
--- a/src/frontend/app/home/followed-list/followed-document-list.component.html
+++ b/src/frontend/app/home/followed-list/followed-document-list.component.html
@@ -48,11 +48,11 @@
                             {{lang.selected}}</small>
                     </div>
                     <div class="table-head-tool">
-                        <span style="float:right;height: 56px;margin-top: 5px;">
+                        <span>
                             <mat-paginator #paginatorResultList [length]="resultsLength" [pageSizeOptions]="[10, 25, 50, 100, 150]"
                                 class="paginatorResultList"></mat-paginator>
                         </span>
-                        <span style="float:right;height: 56px;margin-top: 11px;">
+                        <span>
                             <app-followed-action-list #actionsList [contextMode]="false" [currentFolderInfo]="folderInfo"
                                 [totalRes]="allResInBasket.length" [selectedRes]="selectedRes" [menuShortcut]="menuShortcut"
                                 (refreshEvent)="refreshDaoAfterAction()">
@@ -170,7 +170,7 @@
         <div *ngIf="innerHtml" [matTooltip]="currentChrono" [innerHTML]="innerHtml"
             style="height: 100%;overflow: hidden;"></div>
 
-        <div style="display:flex;">
+        <div style="display:flex;position: sticky;top: 0px;z-index: 2;">
             <button mat-icon-button (click)="snav2.close()" style="font-size: 20px;color:#666;">
                 <mat-icon class="fa fa-arrow-right"></mat-icon>
             </button>
diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
index fa9f248c599915c8843d5757d05408da94142828..b605a59c510985ef4e9d4102d3d6541bb9a04393 100644
--- a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
+++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
@@ -296,15 +296,15 @@ export class IndexingFormComponent implements OnInit {
                 if (element.today === true) {
                     if (!this.adminMode) {
                         const now = new Date();
-                        element.default_value = this.functions.formatDateObjectToFrenchDateString(now, false);
+                        element.default_value = this.functions.formatDateObjectToDateString(now, false);
                     } else {
                         element.default_value = '_TODAY';
                     }
                 } else {
                     if (element.identifier === 'processLimitDate') {
-                        element.default_value = this.functions.formatDateObjectToFrenchDateString(this.arrFormControl[element.identifier].value, true);
+                        element.default_value = this.functions.formatDateObjectToDateString(this.arrFormControl[element.identifier].value, true);
                     } else {
-                        element.default_value = this.functions.formatDateObjectToFrenchDateString(this.arrFormControl[element.identifier].value, false);
+                        element.default_value = this.functions.formatDateObjectToDateString(this.arrFormControl[element.identifier].value, false);
                     }
                 }
             } else {
diff --git a/src/frontend/app/list/basket-list.component.html b/src/frontend/app/list/basket-list.component.html
index 76a78c37eed40408fa4e71fdfda7a9a63a199821..d5eb5f9f12087d26f0876dda92c22aeec4cfa960 100644
--- a/src/frontend/app/list/basket-list.component.html
+++ b/src/frontend/app/list/basket-list.component.html
@@ -46,15 +46,15 @@
                                 {{lang.selected}}</small>
                         </div>
                         <div class="table-head-tool">
-                            <span style="float:right;height: 56px;margin-top: 5px;">
+                            <span>
                                 <mat-paginator #paginatorResultList [length]="resultsLength" [pageSizeOptions]="[10, 25, 50, 100, 150]"
                                     class="paginatorResultList"></mat-paginator>
                             </span>
-                            <span style="float:right;height: 56px;margin-top: 11px;">
+                            <span>
                                 <app-tools-list #actionsList [selectedRes]="selectedRes"
                                     [currentBasketInfo]="currentBasketInfo"></app-tools-list>
                             </span>
-                            <span style="float:right;height: 56px;margin-top: 11px;">
+                            <span>
                                 <app-actions-list #actionsList (refreshEvent)="refreshDao()"
                                     [contextMode]="false" [totalRes]="allResInBasket.length" [selectedRes]="selectedRes"
                                     [currentBasketInfo]="currentBasketInfo" [currentResource]="currentResource" (refreshPanelFolders)="panelFolder.refreshFoldersTree()"></app-actions-list>
@@ -199,8 +199,8 @@
             <div *ngIf="innerHtml && !filtersListService.filterMode" [matTooltip]="currentChrono"
                 [innerHTML]="innerHtml" style="height: 100%;overflow: hidden;"></div>
 
-            <div style="display:flex;">
-                <button mat-icon-button (click)="snav2.close()" style="font-size: 20px;color:#666;">
+                <div style="display:flex;position: sticky;top: 0px;z-index: 2;">
+                    <button mat-icon-button (click)="snav2.close()" style="font-size: 20px;color:#666;">
                     <mat-icon class="fa fa-arrow-right"></mat-icon>
                 </button>
             </div>
diff --git a/src/frontend/app/list/filters/filters-tool.component.html b/src/frontend/app/list/filters/filters-tool.component.html
index abbb8d9dbd8c1f73124b0ef4ca02859181baadcf..fd394835f3676e524abd3eb894773c43bd54ec1d 100644
--- a/src/frontend/app/list/filters/filters-tool.component.html
+++ b/src/frontend/app/list/filters/filters-tool.component.html
@@ -98,4 +98,8 @@
         *ngFor="let doctype of this.listProperties.doctypes; let i=index"
         (click)="removeFilter('doctypes', i)">{{doctype.label}}
         <i class="fa fa-times-circle"></i></span>
-</div>
\ No newline at end of file
+    <span class="label badge-folders" title="{{lang.folders}}"
+        *ngFor="let folder of this.listProperties.folders; let i=index"
+        (click)="removeFilter('folders', i)">{{folder.label}}
+        <i class="fa fa-times-circle"></i></span>
+</div>
diff --git a/src/frontend/app/list/filters/filters-tool.component.scss b/src/frontend/app/list/filters/filters-tool.component.scss
index 7c7aa866df0cab4846a58ef4951c0ecc18f70bd2..e787d4e129d251a0e737533bd15af6328d8c52a3 100644
--- a/src/frontend/app/list/filters/filters-tool.component.scss
+++ b/src/frontend/app/list/filters/filters-tool.component.scss
@@ -172,6 +172,12 @@
     cursor: pointer;
 }
 
+.filterBadges>.badge-folders {
+    margin: 5px;
+    background: #a3d627;
+    cursor: pointer;
+}
+
 ::ng-deep.autoCompletePanelFilter {
     left: 25px;
     min-width: 400px !important;
@@ -182,4 +188,4 @@
     color: #F99830;
     font-size: 14px;
     font-weight: 500;
-}
\ No newline at end of file
+}
diff --git a/src/frontend/app/list/filters/filters-tool.component.ts b/src/frontend/app/list/filters/filters-tool.component.ts
index 8aa7905da1df98a189fa75c36c11168bdac4d4a2..25741890e913b6cd994b49c233e121dcf6988805 100644
--- a/src/frontend/app/list/filters/filters-tool.component.ts
+++ b/src/frontend/app/list/filters/filters-tool.component.ts
@@ -200,6 +200,10 @@ export class FiltersToolComponent implements OnInit {
                 letter: this.lang.doctypes,
                 names: []
             },
+            {
+                letter: this.lang.folders,
+                names: []
+            },
         ];
 
         this.http.get('../..' + this.routeDatas + '?init' + this.filtersListService.getUrlFilters())
@@ -281,6 +285,19 @@ export class FiltersToolComponent implements OnInit {
                         )
                     }
                 });
+
+                data.folders.forEach((element: any) => {
+                    if (this.listProperties.folders.map((doctype: any) => (doctype.id)).indexOf(element.id) === -1) {
+                        this.stateGroups[6].names.push(
+                            {
+                                id: 'folders',
+                                value: element.id,
+                                label: (element.id !== null ? element.label : this.lang.undefined),
+                                count: element.count
+                            }
+                        )
+                    }
+                });
                 this.isLoading = false;
                 if (this.metaSearchInput.length > 0) {
                     setTimeout(() => {
diff --git a/src/frontend/app/list/panel/panel-list.component.html b/src/frontend/app/list/panel/panel-list.component.html
index 54517a60a43dcc4f56528ee0eb8aaeda20675a72..afb3f529c3b552ac2b015e35edfa11171b71449c 100644
--- a/src/frontend/app/list/panel/panel-list.component.html
+++ b/src/frontend/app/list/panel/panel-list.component.html
@@ -1,7 +1,7 @@
 <div style="font-size: 60px;opacity: 0.1;padding-bottom: 30px;text-align: center;">
     <mat-icon fontSet="fas" fontIcon="{{icon}} fa-2x"></mat-icon>
 </div>
-<div style="display:flex;justify-content: center;align-items: center;color: #666;padding-bottom: 10px;">
+<div style="position: sticky;top: 0px;background:white;z-index: 1;display:flex;justify-content: center;align-items: center;color: #666;padding: 10px;">
     <mat-icon *ngIf="this.currentResource.statusImage !== undefined"
         [ngStyle]="{'color': this.currentResource.priorityColor}" color="primary"
         class="{{this.currentResource.statusImage.charAt(0)}}{{this.currentResource.statusImage.charAt(1)}} {{this.currentResource.statusImage}} {{this.currentResource.statusImage.charAt(0)}}{{this.currentResource.statusImage.charAt(1)}}-2x">
diff --git a/src/frontend/app/process/process.component.html b/src/frontend/app/process/process.component.html
index c6adb1efe15c3bba556f11a22b0797691b75e331..91c824c2083bee28ae6b3062388208159a43f29c 100644
--- a/src/frontend/app/process/process.component.html
+++ b/src/frontend/app/process/process.component.html
@@ -12,7 +12,7 @@
                     (click)="changeTab(module.id)">
                     <i *ngIf="module.count > 0" class="fas fa-circle haveContent"></i>
                     <i [class]="module.icon"></i>
-                    <span *ngIf="!appService.getViewMode()">{{module.label}}</span>
+                    <span>{{module.label}}</span>
                 </div>
             </div>
         </div>
diff --git a/src/frontend/app/process/process.component.ts b/src/frontend/app/process/process.component.ts
index f6d81b3f386c610dc69eceb1c889ef8222fa6f8f..5ef4c40a4693685f074092a1ad88d34e017129ff 100755
--- a/src/frontend/app/process/process.component.ts
+++ b/src/frontend/app/process/process.component.ts
@@ -190,6 +190,12 @@ export class ProcessComponent implements OnInit {
             this.loadBadges();
             this.loadResource();
 
+            if (this.appService.getViewMode()) {
+                setTimeout(() => {
+                    this.sidenavLeft.open();
+                }, 800);
+            }
+
             this.http.get(`../../rest/resources/${this.currentResourceInformations.resId}/users/${this.currentUserId}/groups/${this.currentGroupId}/baskets/${this.currentBasketId}/processingData`).pipe(
                 tap((data: any) => {
                     if (data.listEventData !== null) {
diff --git a/src/frontend/app/visa/visa-workflow.component.html b/src/frontend/app/visa/visa-workflow.component.html
index effba69fdb328760992900d93c25cd4575c5a7d7..2b5a7f3235cb2fe23ce25173f0c4f8e3cc82d9e8 100644
--- a/src/frontend/app/visa/visa-workflow.component.html
+++ b/src/frontend/app/visa/visa-workflow.component.html
@@ -1,7 +1,7 @@
 
 <mat-list *ngIf="!loading">
     <mat-form-field appearance="outline" *ngIf="adminMode && !linkedToMaarchParapheur">
-        <input type="text" matInput placeholder="Ajouter des personnes" id="searchVisaSignUserInput"
+        <input type="text" #searchVisaSignUserInput matInput placeholder="Ajouter des personnes" id="searchVisaSignUserInput"
             [formControl]="searchVisaSignUser" [matAutocomplete]="autoGroup">
         <mat-autocomplete #autoGroup="matAutocomplete" (optionSelected)="addItemToWorkflow($event.option.value)" (opened)="initFilterVisaModelList()">
             <mat-option disabled *ngIf="visaModelListNotLoaded">
diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts
index 6998ac09d1ec4026469e39af2081f241e632d9d2..3b593f5c047f012f80b0a9ce4dfc585a855ac384 100644
--- a/src/frontend/app/visa/visa-workflow.component.ts
+++ b/src/frontend/app/visa/visa-workflow.component.ts
@@ -47,7 +47,7 @@ export class VisaWorkflowComponent implements OnInit {
 
     @Input('linkedToMaarchParapheur') linkedToMaarchParapheur: boolean = false;
 
-    @ViewChild('searchVisaSignUserInput', { static: true }) searchVisaSignUserInput: ElementRef;
+    @ViewChild('searchVisaSignUserInput', { static: false }) searchVisaSignUserInput: ElementRef;
 
     searchVisaSignUser = new FormControl();
 
@@ -420,6 +420,8 @@ export class VisaWorkflowComponent implements OnInit {
             if (this.linkedToMaarchParapheur) {
                 this.getMaarchParapheurUserAvatar(item.externalId.maarchParapheur, this.visaWorkflow.items.length - 1);
             }
+            this.searchVisaSignUser.reset();
+            this.searchVisaSignUserInput.nativeElement.blur();
         } else if (item.type === 'user') {
 
 
@@ -438,6 +440,7 @@ export class VisaWorkflowComponent implements OnInit {
                 this.getMaarchParapheurUserAvatar(item.externalId.maarchParapheur, this.visaWorkflow.items.length - 1);
             }
             this.searchVisaSignUser.reset();
+            this.searchVisaSignUserInput.nativeElement.blur();
         } else if (item.type === 'entity') {
             this.http.get(`../../rest/listTemplates/${item.id}`).pipe(
                 tap((data: any) => {
@@ -455,6 +458,7 @@ export class VisaWorkflowComponent implements OnInit {
                         })
                     );
                     this.searchVisaSignUser.reset();
+                    this.searchVisaSignUserInput.nativeElement.blur();
                 })
             ).subscribe();
         }
diff --git a/src/frontend/css/engine_2.scss b/src/frontend/css/engine_2.scss
index 82055653c526c0990f22af376b3dbd2f1050a15f..b1b642390ffb01d66bc7a51406345eb7f1364556 100644
--- a/src/frontend/css/engine_2.scss
+++ b/src/frontend/css/engine_2.scss
@@ -96,6 +96,7 @@ html,body {
 
 .table-head {
     overflow: auto;
+    overflow-y: hidden;
     display: flex;
     padding-left: 25px;
     padding-right: 25px;
@@ -125,8 +126,9 @@ html,body {
     }
 
     &-tool {
-        justify-content: flex-end;
-
+        justify-content: flex-start;
+        display: flex;
+        flex-direction: row-reverse;
         span {
             padding-left: 5px;
             padding-right: 5px;
@@ -134,6 +136,11 @@ html,body {
     }
 }
 
+.mat-paginator {
+    .mat-paginator-container {
+        flex-wrap: initial !important;
+    }
+}
 .mat-icon {
     height: auto;
 }
diff --git a/src/frontend/css/maarch-material.css b/src/frontend/css/maarch-material.css
index dc876fd4bd081741c1a54f175bf299c8003bdd59..17ce42e60a2fd08361ca94080de8eef2c1f2eaf5 100755
--- a/src/frontend/css/maarch-material.css
+++ b/src/frontend/css/maarch-material.css
@@ -1 +1 @@
-.mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto, "Helvetica Neue", sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h5,.mat-typography h5{font:400 calc(14px * 0.83)/20px Roboto, "Helvetica Neue", sans-serif;margin:0 0 12px}.mat-h6,.mat-typography h6{font:400 calc(14px * 0.67)/20px Roboto, "Helvetica Neue", sans-serif;margin:0 0 12px}.mat-body-strong,.mat-body-2{font:500 14px/24px Roboto, "Helvetica Neue", sans-serif}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-body p,.mat-body-1 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption{font:400 12px/20px Roboto, "Helvetica Neue", sans-serif}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.05em;margin:0 0 56px}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.02em;margin:0 0 64px}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.005em;margin:0 0 64px}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Roboto, "Helvetica Neue", sans-serif;margin:0 0 64px}.mat-bottom-sheet-container{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-button,.mat-raised-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button,.mat-fab,.mat-mini-fab{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-button-toggle{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-card{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-card-title{font-size:24px;font-weight:500}.mat-card-header .mat-card-title{font-size:20px}.mat-card-subtitle,.mat-card-content{font-size:14px}.mat-checkbox{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-checkbox-layout .mat-checkbox-label{line-height:24px}.mat-chip{font-size:14px;font-weight:500}.mat-chip .mat-chip-trailing-icon.mat-icon,.mat-chip .mat-chip-remove.mat-icon{font-size:18px}.mat-table{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-header-cell{font-size:12px;font-weight:500}.mat-cell,.mat-footer-cell{font-size:14px}.mat-calendar{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-dialog-title{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif}.mat-expansion-panel-header{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:15px;font-weight:400}.mat-expansion-panel-content{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-form-field{font-size:inherit;font-weight:400;line-height:1.125;font-family:Roboto, "Helvetica Neue", sans-serif}.mat-form-field-wrapper{padding-bottom:1.34375em}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{font-size:150%;line-height:1.125}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{height:1.125em;line-height:1.125}.mat-form-field-infix{padding:.5em 0;border-top:.84375em solid transparent}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34375em) scale(.75);width:133.33333%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34374em) scale(.75);width:133.33334%}.mat-form-field-label-wrapper{top:-.84375em;padding-top:.84375em}.mat-form-field-label{top:1.34375em}.mat-form-field-underline{bottom:1.34375em}.mat-form-field-subscript-wrapper{font-size:75%;margin-top:.66667em;top:calc(100% - 1.79167em)}.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-infix{padding:.4375em 0}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.00101px);-ms-transform:translateY(-1.28124em) scale(.75);width:133.33334%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.00102px);-ms-transform:translateY(-1.28123em) scale(.75);width:133.33335%}.mat-form-field-appearance-legacy .mat-form-field-label{top:1.28125em}.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper{margin-top:.54167em;top:calc(100% - 1.66667em)}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28122em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28121em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.2812em) scale(.75)}}.mat-form-field-appearance-fill .mat-form-field-infix{padding:.25em 0 .75em 0}.mat-form-field-appearance-fill .mat-form-field-label{top:1.09375em;margin-top:-.5em}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59374em) scale(.75);width:133.33334%}.mat-form-field-appearance-outline .mat-form-field-infix{padding:1em 0 1em 0}.mat-form-field-appearance-outline .mat-form-field-label{top:1.84375em;margin-top:-.25em}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59374em) scale(.75);width:133.33334%}.mat-grid-tile-header,.mat-grid-tile-footer{font-size:14px}.mat-grid-tile-header .mat-line,.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2),.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}input.mat-input-element{margin-top:-.0625em}.mat-menu-item{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:400}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px}.mat-radio-button{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-select{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-select-trigger{height:1.125em}.mat-slide-toggle-content{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-slider-thumb-label-text{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px;font-weight:500}.mat-stepper-vertical,.mat-stepper-horizontal{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:normal}.mat-step-label-error{font-size:14px}.mat-step-label-selected{font-size:14px;font-weight:500}.mat-tab-group{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-tab-label,.mat-tab-link{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif;margin:0}.mat-tooltip{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:10px;padding-top:6px;padding-bottom:6px}.mat-tooltip-handset{font-size:14px;padding-top:8px;padding-bottom:8px}.mat-list-item{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-list-option{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-list-base .mat-list-item{font-size:16px}.mat-list-base .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-list-option{font-size:16px}.mat-list-base .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-option .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-subheader{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-list-base[dense] .mat-list-item{font-size:12px}.mat-list-base[dense] .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-list-option{font-size:12px}.mat-list-base[dense] .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-subheader{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px;font-weight:500}.mat-option{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:16px}.mat-optgroup-label{font:500 14px/24px Roboto, "Helvetica Neue", sans-serif}.mat-simple-snackbar{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px}.mat-simple-snackbar-action{line-height:1;font-family:inherit;font-size:inherit;font-weight:500}.mat-tree{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-ripple{overflow:hidden;position:relative}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale(0)}@media (-ms-high-contrast: active){.mat-ripple-element{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;outline:0;-webkit-appearance:none;-moz-appearance:none}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}@media screen and (-ms-high-contrast: active){.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:0.6}}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,0.32)}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation-name:cdk-text-field-autofill-start}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation-name:cdk-text-field-autofill-end}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{height:auto !important;overflow:hidden !important;padding:2px 0 !important;box-sizing:content-box !important}.mat-ripple-element{background-color:rgba(0,0,0,0.1)}.mat-option{color:rgba(0,0,0,0.87)}.mat-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:rgba(0,0,0,0.04)}.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled){background:rgba(0,0,0,0.04)}.mat-option.mat-active{background:rgba(0,0,0,0.04);color:rgba(0,0,0,0.87)}.mat-option.mat-option-disabled{color:rgba(0,0,0,0.38)}.mat-primary .mat-option.mat-selected:not(.mat-option-disabled){color:#135f7f}.mat-accent .mat-option.mat-selected:not(.mat-option-disabled){color:#006841}.mat-warn .mat-option.mat-selected:not(.mat-option-disabled){color:#8e3e52}.mat-optgroup-label{color:rgba(0,0,0,0.54)}.mat-optgroup-disabled .mat-optgroup-label{color:rgba(0,0,0,0.38)}.mat-pseudo-checkbox{color:rgba(0,0,0,0.54)}.mat-pseudo-checkbox::after{color:#fafafa}.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-indeterminate,.mat-accent .mat-pseudo-checkbox-checked,.mat-accent .mat-pseudo-checkbox-indeterminate{background:#006841}.mat-primary .mat-pseudo-checkbox-checked,.mat-primary .mat-pseudo-checkbox-indeterminate{background:#135f7f}.mat-warn .mat-pseudo-checkbox-checked,.mat-warn .mat-pseudo-checkbox-indeterminate{background:#8e3e52}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background:#b0b0b0}.mat-elevation-z0{box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-elevation-z1{box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)}.mat-elevation-z2{box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-elevation-z3{box-shadow:0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)}.mat-elevation-z4{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-elevation-z5{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)}.mat-elevation-z6{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-elevation-z7{box-shadow:0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)}.mat-elevation-z8{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)}.mat-elevation-z9{box-shadow:0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)}.mat-elevation-z10{box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)}.mat-elevation-z11{box-shadow:0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)}.mat-elevation-z12{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)}.mat-elevation-z13{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)}.mat-elevation-z14{box-shadow:0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)}.mat-elevation-z15{box-shadow:0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)}.mat-elevation-z16{box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)}.mat-elevation-z17{box-shadow:0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)}.mat-elevation-z18{box-shadow:0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)}.mat-elevation-z19{box-shadow:0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)}.mat-elevation-z20{box-shadow:0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)}.mat-elevation-z21{box-shadow:0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)}.mat-elevation-z22{box-shadow:0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)}.mat-elevation-z23{box-shadow:0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)}.mat-elevation-z24{box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)}.mat-app-background{background-color:#fafafa;color:rgba(0,0,0,0.87)}.mat-theme-loaded-marker{display:none}.mat-autocomplete-panel{background:#fff;color:rgba(0,0,0,0.87)}.mat-autocomplete-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover){background:#fff}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled){color:rgba(0,0,0,0.87)}.mat-badge-content{color:#fff;background:#135f7f}@media (-ms-high-contrast: active){.mat-badge-content{outline:solid 1px;border-radius:0}}.mat-badge-accent .mat-badge-content{background:#006841;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#8e3e52}.mat-badge{position:relative}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:rgba(0,0,0,0.38)}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir='rtl'] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir='rtl'] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir='rtl'] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir='rtl'] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir='rtl'] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir='rtl'] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-bottom-sheet-container{box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12);background:#fff;color:rgba(0,0,0,0.87)}.mat-button,.mat-icon-button,.mat-stroked-button{color:inherit;background:transparent}.mat-button.mat-primary,.mat-icon-button.mat-primary,.mat-stroked-button.mat-primary{color:#135f7f}.mat-button.mat-accent,.mat-icon-button.mat-accent,.mat-stroked-button.mat-accent{color:#006841}.mat-button.mat-warn,.mat-icon-button.mat-warn,.mat-stroked-button.mat-warn{color:#8e3e52}.mat-button.mat-primary[disabled],.mat-button.mat-accent[disabled],.mat-button.mat-warn[disabled],.mat-button[disabled][disabled],.mat-icon-button.mat-primary[disabled],.mat-icon-button.mat-accent[disabled],.mat-icon-button.mat-warn[disabled],.mat-icon-button[disabled][disabled],.mat-stroked-button.mat-primary[disabled],.mat-stroked-button.mat-accent[disabled],.mat-stroked-button.mat-warn[disabled],.mat-stroked-button[disabled][disabled]{color:rgba(0,0,0,0.26)}.mat-button.mat-primary .mat-button-focus-overlay,.mat-icon-button.mat-primary .mat-button-focus-overlay,.mat-stroked-button.mat-primary .mat-button-focus-overlay{background-color:#135f7f}.mat-button.mat-accent .mat-button-focus-overlay,.mat-icon-button.mat-accent .mat-button-focus-overlay,.mat-stroked-button.mat-accent .mat-button-focus-overlay{background-color:#006841}.mat-button.mat-warn .mat-button-focus-overlay,.mat-icon-button.mat-warn .mat-button-focus-overlay,.mat-stroked-button.mat-warn .mat-button-focus-overlay{background-color:#8e3e52}.mat-button[disabled] .mat-button-focus-overlay,.mat-icon-button[disabled] .mat-button-focus-overlay,.mat-stroked-button[disabled] .mat-button-focus-overlay{background-color:transparent}.mat-button .mat-ripple-element,.mat-icon-button .mat-ripple-element,.mat-stroked-button .mat-ripple-element{opacity:.1;background-color:currentColor}.mat-button-focus-overlay{background:#000}.mat-stroked-button:not([disabled]){border-color:rgba(0,0,0,0.12)}.mat-flat-button,.mat-raised-button,.mat-fab,.mat-mini-fab{color:rgba(0,0,0,0.87);background-color:#fff}.mat-flat-button.mat-primary,.mat-raised-button.mat-primary,.mat-fab.mat-primary,.mat-mini-fab.mat-primary{color:#fff}.mat-flat-button.mat-accent,.mat-raised-button.mat-accent,.mat-fab.mat-accent,.mat-mini-fab.mat-accent{color:#fff}.mat-flat-button.mat-warn,.mat-raised-button.mat-warn,.mat-fab.mat-warn,.mat-mini-fab.mat-warn{color:#fff}.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-accent[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled]{color:rgba(0,0,0,0.26)}.mat-flat-button.mat-primary,.mat-raised-button.mat-primary,.mat-fab.mat-primary,.mat-mini-fab.mat-primary{background-color:#135f7f}.mat-flat-button.mat-accent,.mat-raised-button.mat-accent,.mat-fab.mat-accent,.mat-mini-fab.mat-accent{background-color:#006841}.mat-flat-button.mat-warn,.mat-raised-button.mat-warn,.mat-fab.mat-warn,.mat-mini-fab.mat-warn{background-color:#8e3e52}.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-accent[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled]{background-color:rgba(0,0,0,0.12)}.mat-flat-button.mat-primary .mat-ripple-element,.mat-raised-button.mat-primary .mat-ripple-element,.mat-fab.mat-primary .mat-ripple-element,.mat-mini-fab.mat-primary .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-flat-button.mat-accent .mat-ripple-element,.mat-raised-button.mat-accent .mat-ripple-element,.mat-fab.mat-accent .mat-ripple-element,.mat-mini-fab.mat-accent .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-flat-button.mat-warn .mat-ripple-element,.mat-raised-button.mat-warn .mat-ripple-element,.mat-fab.mat-warn .mat-ripple-element,.mat-mini-fab.mat-warn .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-stroked-button:not([class*='mat-elevation-z']),.mat-flat-button:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-raised-button:not([class*='mat-elevation-z']){box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']){box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)}.mat-raised-button[disabled]:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-fab:not([class*='mat-elevation-z']),.mat-mini-fab:not([class*='mat-elevation-z']){box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-fab:not([disabled]):active:not([class*='mat-elevation-z']),.mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']){box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)}.mat-fab[disabled]:not([class*='mat-elevation-z']),.mat-mini-fab[disabled]:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-button-toggle-standalone,.mat-button-toggle-group{box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{box-shadow:none}.mat-button-toggle{color:rgba(0,0,0,0.38)}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:rgba(0,0,0,0.12)}.mat-button-toggle-appearance-standard{color:rgba(0,0,0,0.87);background:#fff}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px rgba(0,0,0,0.12)}[dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px rgba(0,0,0,0.12)}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px rgba(0,0,0,0.12)}.mat-button-toggle-checked{background-color:#e0e0e0;color:rgba(0,0,0,0.54)}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:rgba(0,0,0,0.87)}.mat-button-toggle-disabled{color:rgba(0,0,0,0.26);background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#fff}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px rgba(0,0,0,0.12)}.mat-card{background:#fff;color:rgba(0,0,0,0.87)}.mat-card:not([class*='mat-elevation-z']){box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)}.mat-card.mat-card-flat:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-card-subtitle{color:rgba(0,0,0,0.54)}.mat-checkbox-frame{border-color:rgba(0,0,0,0.54)}.mat-checkbox-checkmark{fill:#fafafa}.mat-checkbox-checkmark-path{stroke:#fafafa !important}@media (-ms-high-contrast: black-on-white){.mat-checkbox-checkmark-path{stroke:#000 !important}}.mat-checkbox-mixedmark{background-color:#fafafa}.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background,.mat-checkbox-checked.mat-primary .mat-checkbox-background{background-color:#135f7f}.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#006841}.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background,.mat-checkbox-checked.mat-warn .mat-checkbox-background{background-color:#8e3e52}.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background,.mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background{background-color:#b0b0b0}.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame{border-color:#b0b0b0}.mat-checkbox-disabled .mat-checkbox-label{color:rgba(0,0,0,0.54)}@media (-ms-high-contrast: active){.mat-checkbox-disabled{opacity:0.5}}@media (-ms-high-contrast: active){.mat-checkbox-background{background:none}}.mat-checkbox .mat-ripple-element{background-color:#000}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element{background:#135f7f}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element{background:#006841}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element{background:#8e3e52}.mat-chip.mat-standard-chip{background-color:#e0e0e0;color:rgba(0,0,0,0.87)}.mat-chip.mat-standard-chip .mat-chip-remove{color:rgba(0,0,0,0.87);opacity:0.4}.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active{box-shadow:0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)}.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover{opacity:0.54}.mat-chip.mat-standard-chip.mat-chip-disabled{opacity:0.4}.mat-chip.mat-standard-chip::after{background:#000}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary{background-color:#135f7f;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn{background-color:#8e3e52;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent{background-color:#006841;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-table{background:#fff}.mat-table thead,.mat-table tbody,.mat-table tfoot,mat-header-row,mat-row,mat-footer-row,[mat-header-row],[mat-row],[mat-footer-row],.mat-table-sticky{background:inherit}mat-row,mat-header-row,mat-footer-row,th.mat-header-cell,td.mat-cell,td.mat-footer-cell{border-bottom-color:rgba(0,0,0,0.12)}.mat-header-cell{color:rgba(0,0,0,0.54)}.mat-cell,.mat-footer-cell{color:rgba(0,0,0,0.87)}.mat-calendar-arrow{border-top-color:rgba(0,0,0,0.54)}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:rgba(0,0,0,0.54)}.mat-calendar-table-header{color:rgba(0,0,0,0.38)}.mat-calendar-table-header-divider::after{background:rgba(0,0,0,0.12)}.mat-calendar-body-label{color:rgba(0,0,0,0.54)}.mat-calendar-body-cell-content{color:rgba(0,0,0,0.87);border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){color:rgba(0,0,0,0.38)}.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:rgba(0,0,0,0.04)}.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,0.38)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,0.18)}.mat-calendar-body-selected{background-color:#135f7f;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(19,95,127,0.4)}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);background-color:#fff;color:rgba(0,0,0,0.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#006841;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(0,104,65,0.4)}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#8e3e52;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(142,62,82,0.4)}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content-touch{box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-datepicker-toggle-active{color:#135f7f}.mat-datepicker-toggle-active.mat-accent{color:#006841}.mat-datepicker-toggle-active.mat-warn{color:#8e3e52}.mat-dialog-container{box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);background:#fff;color:rgba(0,0,0,0.87)}.mat-divider{border-top-color:rgba(0,0,0,0.12)}.mat-divider-vertical{border-right-color:rgba(0,0,0,0.12)}.mat-expansion-panel{background:#fff;color:rgba(0,0,0,0.87)}.mat-expansion-panel:not([class*='mat-elevation-z']){box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-action-row{border-top-color:rgba(0,0,0,0.12)}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled='true']),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled='true']),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled='true']){background:rgba(0,0,0,0.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) .mat-expansion-panel-header:hover{background:#fff}}.mat-expansion-panel-header-title{color:rgba(0,0,0,0.87)}.mat-expansion-panel-header-description,.mat-expansion-indicator::after{color:rgba(0,0,0,0.54)}.mat-expansion-panel-header[aria-disabled='true']{color:rgba(0,0,0,0.26)}.mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description{color:inherit}.mat-form-field-label{color:rgba(0,0,0,0.6)}.mat-hint{color:rgba(0,0,0,0.6)}.mat-form-field.mat-focused .mat-form-field-label{color:#135f7f}.mat-form-field.mat-focused .mat-form-field-label.mat-accent{color:#006841}.mat-form-field.mat-focused .mat-form-field-label.mat-warn{color:#8e3e52}.mat-focused .mat-form-field-required-marker{color:#006841}.mat-form-field-ripple{background-color:rgba(0,0,0,0.87)}.mat-form-field.mat-focused .mat-form-field-ripple{background-color:#135f7f}.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent{background-color:#006841}.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn{background-color:#8e3e52}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after{color:#135f7f}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after{color:#006841}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-label{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent{background-color:#8e3e52}.mat-error{color:#8e3e52}.mat-form-field-appearance-legacy .mat-form-field-label{color:rgba(0,0,0,0.54)}.mat-form-field-appearance-legacy .mat-hint{color:rgba(0,0,0,0.54)}.mat-form-field-appearance-legacy .mat-form-field-underline{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(to right, rgba(0,0,0,0.42) 0%, rgba(0,0,0,0.42) 33%, transparent 0%);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-standard .mat-form-field-underline{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(to right, rgba(0,0,0,0.42) 0%, rgba(0,0,0,0.42) 33%, transparent 0%);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:rgba(0,0,0,0.04)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex{background-color:rgba(0,0,0,0.02)}.mat-form-field-appearance-fill .mat-form-field-underline::before{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,0.38)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before{background-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline{color:rgba(0,0,0,0.12)}.mat-form-field-appearance-outline .mat-form-field-outline-thick{color:rgba(0,0,0,0.87)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{color:#135f7f}.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick{color:#006841}.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick{color:#8e3e52}.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick{color:#8e3e52}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,0.38)}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{color:rgba(0,0,0,0.06)}.mat-icon.mat-primary{color:#135f7f}.mat-icon.mat-accent{color:#006841}.mat-icon.mat-warn{color:#8e3e52}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{color:rgba(0,0,0,0.54)}.mat-input-element:disabled,.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after{color:rgba(0,0,0,0.38)}.mat-input-element{caret-color:#135f7f}.mat-input-element::placeholder{color:rgba(0,0,0,0.42)}.mat-input-element::-moz-placeholder{color:rgba(0,0,0,0.42)}.mat-input-element::-webkit-input-placeholder{color:rgba(0,0,0,0.42)}.mat-input-element:-ms-input-placeholder{color:rgba(0,0,0,0.42)}.mat-accent .mat-input-element{caret-color:#006841}.mat-warn .mat-input-element,.mat-form-field-invalid .mat-input-element{caret-color:#8e3e52}.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after{color:#8e3e52}.mat-list-base .mat-list-item{color:rgba(0,0,0,0.87)}.mat-list-base .mat-list-option{color:rgba(0,0,0,0.87)}.mat-list-base .mat-subheader{color:rgba(0,0,0,0.54)}.mat-list-item-disabled{background-color:#eee}.mat-list-option:hover,.mat-list-option:focus,.mat-nav-list .mat-list-item:hover,.mat-nav-list .mat-list-item:focus,.mat-action-list .mat-list-item:hover,.mat-action-list .mat-list-item:focus{background:rgba(0,0,0,0.04)}.mat-menu-panel{background:#fff}.mat-menu-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-menu-item{background:transparent;color:rgba(0,0,0,0.87)}.mat-menu-item[disabled],.mat-menu-item[disabled]::after{color:rgba(0,0,0,0.38)}.mat-menu-item .mat-icon-no-color,.mat-menu-item-submenu-trigger::after{color:rgba(0,0,0,0.54)}.mat-menu-item:hover:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,0.04)}.mat-paginator{background:#fff}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{color:rgba(0,0,0,0.54)}.mat-paginator-decrement,.mat-paginator-increment{border-top:2px solid rgba(0,0,0,0.54);border-right:2px solid rgba(0,0,0,0.54)}.mat-paginator-first,.mat-paginator-last{border-top:2px solid rgba(0,0,0,0.54)}.mat-icon-button[disabled] .mat-paginator-decrement,.mat-icon-button[disabled] .mat-paginator-increment,.mat-icon-button[disabled] .mat-paginator-first,.mat-icon-button[disabled] .mat-paginator-last{border-color:rgba(0,0,0,0.38)}.mat-progress-bar-background{fill:#1a80ab}.mat-progress-bar-buffer{background-color:#1a80ab}.mat-progress-bar-fill::after{background-color:#135f7f}.mat-progress-bar.mat-accent .mat-progress-bar-background{fill:#009b61}.mat-progress-bar.mat-accent .mat-progress-bar-buffer{background-color:#009b61}.mat-progress-bar.mat-accent .mat-progress-bar-fill::after{background-color:#006841}.mat-progress-bar.mat-warn .mat-progress-bar-background{fill:#b24e67}.mat-progress-bar.mat-warn .mat-progress-bar-buffer{background-color:#b24e67}.mat-progress-bar.mat-warn .mat-progress-bar-fill::after{background-color:#8e3e52}.mat-progress-spinner circle,.mat-spinner circle{stroke:#135f7f}.mat-progress-spinner.mat-accent circle,.mat-spinner.mat-accent circle{stroke:#006841}.mat-progress-spinner.mat-warn circle,.mat-spinner.mat-warn circle{stroke:#8e3e52}.mat-radio-outer-circle{border-color:rgba(0,0,0,0.54)}.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle{border-color:#135f7f}.mat-radio-button.mat-primary .mat-radio-inner-circle,.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#135f7f}.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#006841}.mat-radio-button.mat-accent .mat-radio-inner-circle,.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple{background-color:#006841}.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle{border-color:#8e3e52}.mat-radio-button.mat-warn .mat-radio-inner-circle,.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple{background-color:#8e3e52}.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle{border-color:rgba(0,0,0,0.38)}.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle{background-color:rgba(0,0,0,0.38)}.mat-radio-button.mat-radio-disabled .mat-radio-label-content{color:rgba(0,0,0,0.38)}.mat-radio-button .mat-ripple-element{background-color:#000}.mat-select-value{color:rgba(0,0,0,0.87)}.mat-select-placeholder{color:rgba(0,0,0,0.42)}.mat-select-disabled .mat-select-value{color:rgba(0,0,0,0.38)}.mat-select-arrow{color:rgba(0,0,0,0.54)}.mat-select-panel{background:#fff}.mat-select-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:rgba(0,0,0,0.12)}.mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#135f7f}.mat-form-field.mat-focused.mat-accent .mat-select-arrow{color:#006841}.mat-form-field.mat-focused.mat-warn .mat-select-arrow{color:#8e3e52}.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow{color:#8e3e52}.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow{color:rgba(0,0,0,0.38)}.mat-drawer-container{background-color:#fafafa;color:rgba(0,0,0,0.87)}.mat-drawer{background-color:#fff;color:rgba(0,0,0,0.87)}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,0.12)}.mat-drawer-side.mat-drawer-end{border-left:solid 1px rgba(0,0,0,0.12);border-right:none}[dir='rtl'] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,0.12);border-right:none}[dir='rtl'] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,0.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:rgba(0,0,0,0.6)}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#006841}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:rgba(0,104,65,0.54)}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#006841}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb{background-color:#135f7f}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar{background-color:rgba(19,95,127,0.54)}.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element{background-color:#135f7f}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb{background-color:#8e3e52}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar{background-color:rgba(142,62,82,0.54)}.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element{background-color:#8e3e52}.mat-slide-toggle:not(.mat-checked) .mat-ripple-element{background-color:#000}.mat-slide-toggle-thumb{box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);background-color:#fafafa}.mat-slide-toggle-bar{background-color:rgba(0,0,0,0.38)}.mat-slider-track-background{background-color:rgba(0,0,0,0.26)}.mat-primary .mat-slider-track-fill,.mat-primary .mat-slider-thumb,.mat-primary .mat-slider-thumb-label{background-color:#135f7f}.mat-primary .mat-slider-thumb-label-text{color:#fff}.mat-accent .mat-slider-track-fill,.mat-accent .mat-slider-thumb,.mat-accent .mat-slider-thumb-label{background-color:#006841}.mat-accent .mat-slider-thumb-label-text{color:#fff}.mat-warn .mat-slider-track-fill,.mat-warn .mat-slider-thumb,.mat-warn .mat-slider-thumb-label{background-color:#8e3e52}.mat-warn .mat-slider-thumb-label-text{color:#fff}.mat-slider-focus-ring{background-color:rgba(0,104,65,0.2)}.mat-slider:hover .mat-slider-track-background,.cdk-focused .mat-slider-track-background{background-color:rgba(0,0,0,0.38)}.mat-slider-disabled .mat-slider-track-background,.mat-slider-disabled .mat-slider-track-fill,.mat-slider-disabled .mat-slider-thumb{background-color:rgba(0,0,0,0.26)}.mat-slider-disabled:hover .mat-slider-track-background{background-color:rgba(0,0,0,0.26)}.mat-slider-min-value .mat-slider-focus-ring{background-color:rgba(0,0,0,0.12)}.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label{background-color:rgba(0,0,0,0.87)}.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label{background-color:rgba(0,0,0,0.26)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{border-color:rgba(0,0,0,0.26);background-color:transparent}.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb{border-color:rgba(0,0,0,0.38)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb{border-color:rgba(0,0,0,0.26)}.mat-slider-has-ticks .mat-slider-wrapper::after{border-color:rgba(0,0,0,0.7)}.mat-slider-horizontal .mat-slider-ticks{background-image:repeating-linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent);background-image:-moz-repeating-linear-gradient(0.0001deg, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent)}.mat-slider-vertical .mat-slider-ticks{background-image:repeating-linear-gradient(to bottom, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent)}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover{background-color:rgba(0,0,0,0.04)}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:rgba(0,0,0,0.54)}.mat-step-header .mat-step-icon{background-color:rgba(0,0,0,0.54);color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#135f7f;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#8e3e52}.mat-step-header .mat-step-label.mat-step-label-active{color:rgba(0,0,0,0.87)}.mat-step-header .mat-step-label.mat-step-label-error{color:#8e3e52}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line::before{border-left-color:rgba(0,0,0,0.12)}.mat-horizontal-stepper-header::before,.mat-horizontal-stepper-header::after,.mat-stepper-horizontal-line{border-top-color:rgba(0,0,0,0.12)}.mat-sort-header-arrow{color:#757575}.mat-tab-nav-bar,.mat-tab-header{border-bottom:1px solid rgba(0,0,0,0.12)}.mat-tab-group-inverted-header .mat-tab-nav-bar,.mat-tab-group-inverted-header .mat-tab-header{border-top:1px solid rgba(0,0,0,0.12);border-bottom:none}.mat-tab-label,.mat-tab-link{color:rgba(0,0,0,0.87)}.mat-tab-label.mat-tab-disabled,.mat-tab-link.mat-tab-disabled{color:rgba(0,0,0,0.38)}.mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,0.87)}.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,0.38)}.mat-tab-group[class*='mat-background-'] .mat-tab-header,.mat-tab-nav-bar[class*='mat-background-']{border-bottom:none;border-top:none}.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(26,128,171,0.3)}.mat-tab-group.mat-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary .mat-ink-bar{background-color:#135f7f}.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(0,155,97,0.3)}.mat-tab-group.mat-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent .mat-ink-bar{background-color:#006841}.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(178,78,103,0.3)}.mat-tab-group.mat-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn .mat-ink-bar{background-color:#8e3e52}.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(26,128,171,0.3)}.mat-tab-group.mat-background-primary .mat-tab-header,.mat-tab-group.mat-background-primary .mat-tab-links,.mat-tab-group.mat-background-primary .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-primary .mat-tab-header,.mat-tab-nav-bar.mat-background-primary .mat-tab-links,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination{background-color:#135f7f}.mat-tab-group.mat-background-primary .mat-tab-label,.mat-tab-group.mat-background-primary .mat-tab-link,.mat-tab-nav-bar.mat-background-primary .mat-tab-label,.mat-tab-nav-bar.mat-background-primary .mat-tab-link{color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-primary .mat-ripple-element,.mat-tab-nav-bar.mat-background-primary .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(0,155,97,0.3)}.mat-tab-group.mat-background-accent .mat-tab-header,.mat-tab-group.mat-background-accent .mat-tab-links,.mat-tab-group.mat-background-accent .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-accent .mat-tab-header,.mat-tab-nav-bar.mat-background-accent .mat-tab-links,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination{background-color:#006841}.mat-tab-group.mat-background-accent .mat-tab-label,.mat-tab-group.mat-background-accent .mat-tab-link,.mat-tab-nav-bar.mat-background-accent .mat-tab-label,.mat-tab-nav-bar.mat-background-accent .mat-tab-link{color:#fff}.mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-accent .mat-ripple-element,.mat-tab-nav-bar.mat-background-accent .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(178,78,103,0.3)}.mat-tab-group.mat-background-warn .mat-tab-header,.mat-tab-group.mat-background-warn .mat-tab-links,.mat-tab-group.mat-background-warn .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-warn .mat-tab-header,.mat-tab-nav-bar.mat-background-warn .mat-tab-links,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination{background-color:#8e3e52}.mat-tab-group.mat-background-warn .mat-tab-label,.mat-tab-group.mat-background-warn .mat-tab-link,.mat-tab-nav-bar.mat-background-warn .mat-tab-label,.mat-tab-nav-bar.mat-background-warn .mat-tab-link{color:#fff}.mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-warn .mat-ripple-element,.mat-tab-nav-bar.mat-background-warn .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-toolbar{background:#f5f5f5;color:rgba(0,0,0,0.87)}.mat-toolbar.mat-primary{background:#135f7f;color:#fff}.mat-toolbar.mat-accent{background:#006841;color:#fff}.mat-toolbar.mat-warn{background:#8e3e52;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-tooltip{background:rgba(97,97,97,0.9)}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:rgba(0,0,0,0.87)}.mat-snack-bar-container{color:rgba(255,255,255,0.7);background:#323232;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-simple-snackbar-action{color:#006841}[color=primary]{color:#135f7f}[color=secondary]{color:#F99830}[color=warn]{color:#8e3e52}[color=accent]{color:#006841}[bgcolor=primary]{background-color:#135f7f}[bgcolor=warn]{background-color:#8e3e52}[bgcolor=accent]{background-color:#006841}.jstree-proton .jstree-clicked{background:#1a80ab !important}.jstree-proton :not(.jstree-disabled).jstree-hovered{background:#1a80ab !important;box-shadow:inset 0 0 1px #135f7f !important}.jstree-proton .jstree-disabled:hover{cursor:not-allowed}.dndFile{border:dashed 5px grey;padding:10px;text-align:center;opacity:0.5;font-size:15px;font-weight:bolder;margin:20px}.dndFileHighlighted{opacity:1 !important;border:dashed 5px #135f7f !important;color:#135f7f}.cdk-textarea-autosize{min-height:18px !important}
+.mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto, "Helvetica Neue", sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Roboto, "Helvetica Neue", sans-serif;margin:0 0 16px}.mat-h5,.mat-typography h5{font:400 calc(14px * 0.83)/20px Roboto, "Helvetica Neue", sans-serif;margin:0 0 12px}.mat-h6,.mat-typography h6{font:400 calc(14px * 0.67)/20px Roboto, "Helvetica Neue", sans-serif;margin:0 0 12px}.mat-body-strong,.mat-body-2{font:500 14px/24px Roboto, "Helvetica Neue", sans-serif}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-body p,.mat-body-1 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption{font:400 12px/20px Roboto, "Helvetica Neue", sans-serif}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.05em;margin:0 0 56px}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.02em;margin:0 0 64px}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Roboto, "Helvetica Neue", sans-serif;letter-spacing:-.005em;margin:0 0 64px}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Roboto, "Helvetica Neue", sans-serif;margin:0 0 64px}.mat-bottom-sheet-container{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-button,.mat-raised-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button,.mat-fab,.mat-mini-fab{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-button-toggle{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-card{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-card-title{font-size:24px;font-weight:500}.mat-card-header .mat-card-title{font-size:20px}.mat-card-subtitle,.mat-card-content{font-size:14px}.mat-checkbox{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-checkbox-layout .mat-checkbox-label{line-height:24px}.mat-chip{font-size:14px;font-weight:500}.mat-chip .mat-chip-trailing-icon.mat-icon,.mat-chip .mat-chip-remove.mat-icon{font-size:18px}.mat-table{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-header-cell{font-size:12px;font-weight:500}.mat-cell,.mat-footer-cell{font-size:14px}.mat-calendar{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-dialog-title{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif}.mat-expansion-panel-header{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:15px;font-weight:400}.mat-expansion-panel-content{font:400 14px/20px Roboto, "Helvetica Neue", sans-serif}.mat-form-field{font-size:inherit;font-weight:400;line-height:1.125;font-family:Roboto, "Helvetica Neue", sans-serif}.mat-form-field-wrapper{padding-bottom:1.34375em}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{font-size:150%;line-height:1.125}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{height:1.125em;line-height:1.125}.mat-form-field-infix{padding:.5em 0;border-top:.84375em solid transparent}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34375em) scale(.75);width:133.33333%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34374em) scale(.75);width:133.33334%}.mat-form-field-label-wrapper{top:-.84375em;padding-top:.84375em}.mat-form-field-label{top:1.34375em}.mat-form-field-underline{bottom:1.34375em}.mat-form-field-subscript-wrapper{font-size:75%;margin-top:.66667em;top:calc(100% - 1.79167em)}.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-infix{padding:.4375em 0}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.00101px);-ms-transform:translateY(-1.28124em) scale(.75);width:133.33334%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(0.00102px);-ms-transform:translateY(-1.28123em) scale(.75);width:133.33335%}.mat-form-field-appearance-legacy .mat-form-field-label{top:1.28125em}.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper{margin-top:.54167em;top:calc(100% - 1.66667em)}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28122em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28121em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.2812em) scale(.75)}}.mat-form-field-appearance-fill .mat-form-field-infix{padding:.25em 0 .75em 0}.mat-form-field-appearance-fill .mat-form-field-label{top:1.09375em;margin-top:-.5em}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59374em) scale(.75);width:133.33334%}.mat-form-field-appearance-outline .mat-form-field-infix{padding:1em 0 1em 0}.mat-form-field-appearance-outline .mat-form-field-label{top:1.84375em;margin-top:-.25em}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59374em) scale(.75);width:133.33334%}.mat-grid-tile-header,.mat-grid-tile-footer{font-size:14px}.mat-grid-tile-header .mat-line,.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2),.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}input.mat-input-element{margin-top:-.0625em}.mat-menu-item{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:400}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px}.mat-radio-button{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-select{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-select-trigger{height:1.125em}.mat-slide-toggle-content{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-slider-thumb-label-text{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px;font-weight:500}.mat-stepper-vertical,.mat-stepper-horizontal{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:normal}.mat-step-label-error{font-size:14px}.mat-step-label-selected{font-size:14px;font-weight:500}.mat-tab-group{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-tab-label,.mat-tab-link{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Roboto, "Helvetica Neue", sans-serif;margin:0}.mat-tooltip{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:10px;padding-top:6px;padding-bottom:6px}.mat-tooltip-handset{font-size:14px;padding-top:8px;padding-bottom:8px}.mat-list-item{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-list-option{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-list-base .mat-list-item{font-size:16px}.mat-list-base .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-list-option{font-size:16px}.mat-list-base .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-option .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-subheader{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px;font-weight:500}.mat-list-base[dense] .mat-list-item{font-size:12px}.mat-list-base[dense] .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-list-option{font-size:12px}.mat-list-base[dense] .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-subheader{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:12px;font-weight:500}.mat-option{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:16px}.mat-optgroup-label{font:500 14px/24px Roboto, "Helvetica Neue", sans-serif}.mat-simple-snackbar{font-family:Roboto, "Helvetica Neue", sans-serif;font-size:14px}.mat-simple-snackbar-action{line-height:1;font-family:inherit;font-size:inherit;font-weight:500}.mat-tree{font-family:Roboto, "Helvetica Neue", sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-ripple{overflow:hidden;position:relative}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale(0)}@media (-ms-high-contrast: active){.mat-ripple-element{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;outline:0;-webkit-appearance:none;-moz-appearance:none}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}@media screen and (-ms-high-contrast: active){.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:0.6}}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,0.32)}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation-name:cdk-text-field-autofill-start}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation-name:cdk-text-field-autofill-end}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{height:auto !important;overflow:hidden !important;padding:2px 0 !important;box-sizing:content-box !important}.mat-ripple-element{background-color:rgba(0,0,0,0.1)}.mat-option{color:rgba(0,0,0,0.87)}.mat-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:rgba(0,0,0,0.04)}.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled){background:rgba(0,0,0,0.04)}.mat-option.mat-active{background:rgba(0,0,0,0.04);color:rgba(0,0,0,0.87)}.mat-option.mat-option-disabled{color:rgba(0,0,0,0.38)}.mat-primary .mat-option.mat-selected:not(.mat-option-disabled){color:#135f7f}.mat-accent .mat-option.mat-selected:not(.mat-option-disabled){color:#006841}.mat-warn .mat-option.mat-selected:not(.mat-option-disabled){color:#8e3e52}.mat-optgroup-label{color:rgba(0,0,0,0.54)}.mat-optgroup-disabled .mat-optgroup-label{color:rgba(0,0,0,0.38)}.mat-pseudo-checkbox{color:rgba(0,0,0,0.54)}.mat-pseudo-checkbox::after{color:#fafafa}.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked,.mat-primary .mat-pseudo-checkbox-indeterminate{background:#135f7f}.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-indeterminate,.mat-accent .mat-pseudo-checkbox-checked,.mat-accent .mat-pseudo-checkbox-indeterminate{background:#006841}.mat-warn .mat-pseudo-checkbox-checked,.mat-warn .mat-pseudo-checkbox-indeterminate{background:#8e3e52}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background:#b0b0b0}.mat-elevation-z0{box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-elevation-z1{box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)}.mat-elevation-z2{box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-elevation-z3{box-shadow:0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)}.mat-elevation-z4{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-elevation-z5{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)}.mat-elevation-z6{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-elevation-z7{box-shadow:0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)}.mat-elevation-z8{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)}.mat-elevation-z9{box-shadow:0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)}.mat-elevation-z10{box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)}.mat-elevation-z11{box-shadow:0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)}.mat-elevation-z12{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)}.mat-elevation-z13{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)}.mat-elevation-z14{box-shadow:0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)}.mat-elevation-z15{box-shadow:0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)}.mat-elevation-z16{box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)}.mat-elevation-z17{box-shadow:0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)}.mat-elevation-z18{box-shadow:0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)}.mat-elevation-z19{box-shadow:0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)}.mat-elevation-z20{box-shadow:0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)}.mat-elevation-z21{box-shadow:0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)}.mat-elevation-z22{box-shadow:0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)}.mat-elevation-z23{box-shadow:0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)}.mat-elevation-z24{box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)}.mat-app-background{background-color:#fafafa;color:rgba(0,0,0,0.87)}.mat-theme-loaded-marker{display:none}.mat-autocomplete-panel{background:#fff;color:rgba(0,0,0,0.87)}.mat-autocomplete-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover){background:#fff}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled){color:rgba(0,0,0,0.87)}.mat-badge-content{color:#fff;background:#135f7f}@media (-ms-high-contrast: active){.mat-badge-content{outline:solid 1px;border-radius:0}}.mat-badge-accent .mat-badge-content{background:#006841;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#8e3e52}.mat-badge{position:relative}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:rgba(0,0,0,0.38)}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir='rtl'] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir='rtl'] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir='rtl'] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir='rtl'] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir='rtl'] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir='rtl'] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-bottom-sheet-container{box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12);background:#fff;color:rgba(0,0,0,0.87)}.mat-button,.mat-icon-button,.mat-stroked-button{color:inherit;background:transparent}.mat-button.mat-primary,.mat-icon-button.mat-primary,.mat-stroked-button.mat-primary{color:#135f7f}.mat-button.mat-accent,.mat-icon-button.mat-accent,.mat-stroked-button.mat-accent{color:#006841}.mat-button.mat-warn,.mat-icon-button.mat-warn,.mat-stroked-button.mat-warn{color:#8e3e52}.mat-button.mat-primary[disabled],.mat-button.mat-accent[disabled],.mat-button.mat-warn[disabled],.mat-button[disabled][disabled],.mat-icon-button.mat-primary[disabled],.mat-icon-button.mat-accent[disabled],.mat-icon-button.mat-warn[disabled],.mat-icon-button[disabled][disabled],.mat-stroked-button.mat-primary[disabled],.mat-stroked-button.mat-accent[disabled],.mat-stroked-button.mat-warn[disabled],.mat-stroked-button[disabled][disabled]{color:rgba(0,0,0,0.26)}.mat-button.mat-primary .mat-button-focus-overlay,.mat-icon-button.mat-primary .mat-button-focus-overlay,.mat-stroked-button.mat-primary .mat-button-focus-overlay{background-color:#135f7f}.mat-button.mat-accent .mat-button-focus-overlay,.mat-icon-button.mat-accent .mat-button-focus-overlay,.mat-stroked-button.mat-accent .mat-button-focus-overlay{background-color:#006841}.mat-button.mat-warn .mat-button-focus-overlay,.mat-icon-button.mat-warn .mat-button-focus-overlay,.mat-stroked-button.mat-warn .mat-button-focus-overlay{background-color:#8e3e52}.mat-button[disabled] .mat-button-focus-overlay,.mat-icon-button[disabled] .mat-button-focus-overlay,.mat-stroked-button[disabled] .mat-button-focus-overlay{background-color:transparent}.mat-button .mat-ripple-element,.mat-icon-button .mat-ripple-element,.mat-stroked-button .mat-ripple-element{opacity:.1;background-color:currentColor}.mat-button-focus-overlay{background:#000}.mat-stroked-button:not([disabled]){border-color:rgba(0,0,0,0.12)}.mat-flat-button,.mat-raised-button,.mat-fab,.mat-mini-fab{color:rgba(0,0,0,0.87);background-color:#fff}.mat-flat-button.mat-primary,.mat-raised-button.mat-primary,.mat-fab.mat-primary,.mat-mini-fab.mat-primary{color:#fff}.mat-flat-button.mat-accent,.mat-raised-button.mat-accent,.mat-fab.mat-accent,.mat-mini-fab.mat-accent{color:#fff}.mat-flat-button.mat-warn,.mat-raised-button.mat-warn,.mat-fab.mat-warn,.mat-mini-fab.mat-warn{color:#fff}.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-accent[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled]{color:rgba(0,0,0,0.26)}.mat-flat-button.mat-primary,.mat-raised-button.mat-primary,.mat-fab.mat-primary,.mat-mini-fab.mat-primary{background-color:#135f7f}.mat-flat-button.mat-accent,.mat-raised-button.mat-accent,.mat-fab.mat-accent,.mat-mini-fab.mat-accent{background-color:#006841}.mat-flat-button.mat-warn,.mat-raised-button.mat-warn,.mat-fab.mat-warn,.mat-mini-fab.mat-warn{background-color:#8e3e52}.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-accent[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled]{background-color:rgba(0,0,0,0.12)}.mat-flat-button.mat-primary .mat-ripple-element,.mat-raised-button.mat-primary .mat-ripple-element,.mat-fab.mat-primary .mat-ripple-element,.mat-mini-fab.mat-primary .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-flat-button.mat-accent .mat-ripple-element,.mat-raised-button.mat-accent .mat-ripple-element,.mat-fab.mat-accent .mat-ripple-element,.mat-mini-fab.mat-accent .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-flat-button.mat-warn .mat-ripple-element,.mat-raised-button.mat-warn .mat-ripple-element,.mat-fab.mat-warn .mat-ripple-element,.mat-mini-fab.mat-warn .mat-ripple-element{background-color:rgba(255,255,255,0.1)}.mat-stroked-button:not([class*='mat-elevation-z']),.mat-flat-button:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-raised-button:not([class*='mat-elevation-z']){box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']){box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)}.mat-raised-button[disabled]:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-fab:not([class*='mat-elevation-z']),.mat-mini-fab:not([class*='mat-elevation-z']){box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-fab:not([disabled]):active:not([class*='mat-elevation-z']),.mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']){box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)}.mat-fab[disabled]:not([class*='mat-elevation-z']),.mat-mini-fab[disabled]:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-button-toggle-standalone,.mat-button-toggle-group{box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{box-shadow:none}.mat-button-toggle{color:rgba(0,0,0,0.38)}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:rgba(0,0,0,0.12)}.mat-button-toggle-appearance-standard{color:rgba(0,0,0,0.87);background:#fff}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px rgba(0,0,0,0.12)}[dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px rgba(0,0,0,0.12)}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px rgba(0,0,0,0.12)}.mat-button-toggle-checked{background-color:#e0e0e0;color:rgba(0,0,0,0.54)}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:rgba(0,0,0,0.87)}.mat-button-toggle-disabled{color:rgba(0,0,0,0.26);background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#fff}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px rgba(0,0,0,0.12)}.mat-card{background:#fff;color:rgba(0,0,0,0.87)}.mat-card:not([class*='mat-elevation-z']){box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)}.mat-card.mat-card-flat:not([class*='mat-elevation-z']){box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-card-subtitle{color:rgba(0,0,0,0.54)}.mat-checkbox-frame{border-color:rgba(0,0,0,0.54)}.mat-checkbox-checkmark{fill:#fafafa}.mat-checkbox-checkmark-path{stroke:#fafafa !important}@media (-ms-high-contrast: black-on-white){.mat-checkbox-checkmark-path{stroke:#000 !important}}.mat-checkbox-mixedmark{background-color:#fafafa}.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background,.mat-checkbox-checked.mat-primary .mat-checkbox-background{background-color:#135f7f}.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#006841}.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background,.mat-checkbox-checked.mat-warn .mat-checkbox-background{background-color:#8e3e52}.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background,.mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background{background-color:#b0b0b0}.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame{border-color:#b0b0b0}.mat-checkbox-disabled .mat-checkbox-label{color:rgba(0,0,0,0.54)}@media (-ms-high-contrast: active){.mat-checkbox-disabled{opacity:0.5}}@media (-ms-high-contrast: active){.mat-checkbox-background{background:none}}.mat-checkbox .mat-ripple-element{background-color:#000}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element{background:#135f7f}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element{background:#006841}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element{background:#8e3e52}.mat-chip.mat-standard-chip{background-color:#e0e0e0;color:rgba(0,0,0,0.87)}.mat-chip.mat-standard-chip .mat-chip-remove{color:rgba(0,0,0,0.87);opacity:0.4}.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active{box-shadow:0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)}.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover{opacity:0.54}.mat-chip.mat-standard-chip.mat-chip-disabled{opacity:0.4}.mat-chip.mat-standard-chip::after{background:#000}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary{background-color:#135f7f;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn{background-color:#8e3e52;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent{background-color:#006841;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove{color:#fff;opacity:0.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element{background:rgba(255,255,255,0.1)}.mat-table{background:#fff}.mat-table thead,.mat-table tbody,.mat-table tfoot,mat-header-row,mat-row,mat-footer-row,[mat-header-row],[mat-row],[mat-footer-row],.mat-table-sticky{background:inherit}mat-row,mat-header-row,mat-footer-row,th.mat-header-cell,td.mat-cell,td.mat-footer-cell{border-bottom-color:rgba(0,0,0,0.12)}.mat-header-cell{color:rgba(0,0,0,0.54)}.mat-cell,.mat-footer-cell{color:rgba(0,0,0,0.87)}.mat-calendar-arrow{border-top-color:rgba(0,0,0,0.54)}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:rgba(0,0,0,0.54)}.mat-calendar-table-header{color:rgba(0,0,0,0.38)}.mat-calendar-table-header-divider::after{background:rgba(0,0,0,0.12)}.mat-calendar-body-label{color:rgba(0,0,0,0.54)}.mat-calendar-body-cell-content{color:rgba(0,0,0,0.87);border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){color:rgba(0,0,0,0.38)}.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:rgba(0,0,0,0.04)}.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,0.38)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,0.18)}.mat-calendar-body-selected{background-color:#135f7f;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(19,95,127,0.4)}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);background-color:#fff;color:rgba(0,0,0,0.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#006841;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(0,104,65,0.4)}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#8e3e52;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(142,62,82,0.4)}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content-touch{box-shadow:0px 0px 0px 0px rgba(0,0,0,0.2),0px 0px 0px 0px rgba(0,0,0,0.14),0px 0px 0px 0px rgba(0,0,0,0.12)}.mat-datepicker-toggle-active{color:#135f7f}.mat-datepicker-toggle-active.mat-accent{color:#006841}.mat-datepicker-toggle-active.mat-warn{color:#8e3e52}.mat-dialog-container{box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);background:#fff;color:rgba(0,0,0,0.87)}.mat-divider{border-top-color:rgba(0,0,0,0.12)}.mat-divider-vertical{border-right-color:rgba(0,0,0,0.12)}.mat-expansion-panel{background:#fff;color:rgba(0,0,0,0.87)}.mat-expansion-panel:not([class*='mat-elevation-z']){box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.mat-action-row{border-top-color:rgba(0,0,0,0.12)}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled='true']),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled='true']),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled='true']){background:rgba(0,0,0,0.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) .mat-expansion-panel-header:hover{background:#fff}}.mat-expansion-panel-header-title{color:rgba(0,0,0,0.87)}.mat-expansion-panel-header-description,.mat-expansion-indicator::after{color:rgba(0,0,0,0.54)}.mat-expansion-panel-header[aria-disabled='true']{color:rgba(0,0,0,0.26)}.mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description{color:inherit}.mat-form-field-label{color:rgba(0,0,0,0.6)}.mat-hint{color:rgba(0,0,0,0.6)}.mat-form-field.mat-focused .mat-form-field-label{color:#135f7f}.mat-form-field.mat-focused .mat-form-field-label.mat-accent{color:#006841}.mat-form-field.mat-focused .mat-form-field-label.mat-warn{color:#8e3e52}.mat-focused .mat-form-field-required-marker{color:#006841}.mat-form-field-ripple{background-color:rgba(0,0,0,0.87)}.mat-form-field.mat-focused .mat-form-field-ripple{background-color:#135f7f}.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent{background-color:#006841}.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn{background-color:#8e3e52}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after{color:#135f7f}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after{color:#006841}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-label{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker{color:#8e3e52}.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent{background-color:#8e3e52}.mat-error{color:#8e3e52}.mat-form-field-appearance-legacy .mat-form-field-label{color:rgba(0,0,0,0.54)}.mat-form-field-appearance-legacy .mat-hint{color:rgba(0,0,0,0.54)}.mat-form-field-appearance-legacy .mat-form-field-underline{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(to right, rgba(0,0,0,0.42) 0%, rgba(0,0,0,0.42) 33%, transparent 0%);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-standard .mat-form-field-underline{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(to right, rgba(0,0,0,0.42) 0%, rgba(0,0,0,0.42) 33%, transparent 0%);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:rgba(0,0,0,0.04)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex{background-color:rgba(0,0,0,0.02)}.mat-form-field-appearance-fill .mat-form-field-underline::before{background-color:rgba(0,0,0,0.42)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,0.38)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before{background-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline{color:rgba(0,0,0,0.12)}.mat-form-field-appearance-outline .mat-form-field-outline-thick{color:rgba(0,0,0,0.87)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{color:#135f7f}.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick{color:#006841}.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick{color:#8e3e52}.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick{color:#8e3e52}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,0.38)}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{color:rgba(0,0,0,0.06)}.mat-icon.mat-primary{color:#135f7f}.mat-icon.mat-accent{color:#006841}.mat-icon.mat-warn{color:#8e3e52}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{color:rgba(0,0,0,0.54)}.mat-input-element:disabled,.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after{color:rgba(0,0,0,0.38)}.mat-input-element{caret-color:#135f7f}.mat-input-element::placeholder{color:rgba(0,0,0,0.42)}.mat-input-element::-moz-placeholder{color:rgba(0,0,0,0.42)}.mat-input-element::-webkit-input-placeholder{color:rgba(0,0,0,0.42)}.mat-input-element:-ms-input-placeholder{color:rgba(0,0,0,0.42)}.mat-accent .mat-input-element{caret-color:#006841}.mat-warn .mat-input-element,.mat-form-field-invalid .mat-input-element{caret-color:#8e3e52}.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after{color:#8e3e52}.mat-list-base .mat-list-item{color:rgba(0,0,0,0.87)}.mat-list-base .mat-list-option{color:rgba(0,0,0,0.87)}.mat-list-base .mat-subheader{color:rgba(0,0,0,0.54)}.mat-list-item-disabled{background-color:#eee}.mat-list-option:hover,.mat-list-option:focus,.mat-nav-list .mat-list-item:hover,.mat-nav-list .mat-list-item:focus,.mat-action-list .mat-list-item:hover,.mat-action-list .mat-list-item:focus{background:rgba(0,0,0,0.04)}.mat-menu-panel{background:#fff}.mat-menu-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-menu-item{background:transparent;color:rgba(0,0,0,0.87)}.mat-menu-item[disabled],.mat-menu-item[disabled]::after{color:rgba(0,0,0,0.38)}.mat-menu-item .mat-icon-no-color,.mat-menu-item-submenu-trigger::after{color:rgba(0,0,0,0.54)}.mat-menu-item:hover:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,0.04)}.mat-paginator{background:#fff}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{color:rgba(0,0,0,0.54)}.mat-paginator-decrement,.mat-paginator-increment{border-top:2px solid rgba(0,0,0,0.54);border-right:2px solid rgba(0,0,0,0.54)}.mat-paginator-first,.mat-paginator-last{border-top:2px solid rgba(0,0,0,0.54)}.mat-icon-button[disabled] .mat-paginator-decrement,.mat-icon-button[disabled] .mat-paginator-increment,.mat-icon-button[disabled] .mat-paginator-first,.mat-icon-button[disabled] .mat-paginator-last{border-color:rgba(0,0,0,0.38)}.mat-progress-bar-background{fill:#1a80ab}.mat-progress-bar-buffer{background-color:#1a80ab}.mat-progress-bar-fill::after{background-color:#135f7f}.mat-progress-bar.mat-accent .mat-progress-bar-background{fill:#009b61}.mat-progress-bar.mat-accent .mat-progress-bar-buffer{background-color:#009b61}.mat-progress-bar.mat-accent .mat-progress-bar-fill::after{background-color:#006841}.mat-progress-bar.mat-warn .mat-progress-bar-background{fill:#b24e67}.mat-progress-bar.mat-warn .mat-progress-bar-buffer{background-color:#b24e67}.mat-progress-bar.mat-warn .mat-progress-bar-fill::after{background-color:#8e3e52}.mat-progress-spinner circle,.mat-spinner circle{stroke:#135f7f}.mat-progress-spinner.mat-accent circle,.mat-spinner.mat-accent circle{stroke:#006841}.mat-progress-spinner.mat-warn circle,.mat-spinner.mat-warn circle{stroke:#8e3e52}.mat-radio-outer-circle{border-color:rgba(0,0,0,0.54)}.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle{border-color:#135f7f}.mat-radio-button.mat-primary .mat-radio-inner-circle,.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#135f7f}.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#006841}.mat-radio-button.mat-accent .mat-radio-inner-circle,.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple{background-color:#006841}.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle{border-color:#8e3e52}.mat-radio-button.mat-warn .mat-radio-inner-circle,.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple{background-color:#8e3e52}.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle{border-color:rgba(0,0,0,0.38)}.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle{background-color:rgba(0,0,0,0.38)}.mat-radio-button.mat-radio-disabled .mat-radio-label-content{color:rgba(0,0,0,0.38)}.mat-radio-button .mat-ripple-element{background-color:#000}.mat-select-value{color:rgba(0,0,0,0.87)}.mat-select-placeholder{color:rgba(0,0,0,0.42)}.mat-select-disabled .mat-select-value{color:rgba(0,0,0,0.38)}.mat-select-arrow{color:rgba(0,0,0,0.54)}.mat-select-panel{background:#fff}.mat-select-panel:not([class*='mat-elevation-z']){box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:rgba(0,0,0,0.12)}.mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#135f7f}.mat-form-field.mat-focused.mat-accent .mat-select-arrow{color:#006841}.mat-form-field.mat-focused.mat-warn .mat-select-arrow{color:#8e3e52}.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow{color:#8e3e52}.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow{color:rgba(0,0,0,0.38)}.mat-drawer-container{background-color:#fafafa;color:rgba(0,0,0,0.87)}.mat-drawer{background-color:#fff;color:rgba(0,0,0,0.87)}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,0.12)}.mat-drawer-side.mat-drawer-end{border-left:solid 1px rgba(0,0,0,0.12);border-right:none}[dir='rtl'] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,0.12);border-right:none}[dir='rtl'] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,0.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:rgba(0,0,0,0.6)}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#006841}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:rgba(0,104,65,0.54)}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#006841}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb{background-color:#135f7f}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar{background-color:rgba(19,95,127,0.54)}.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element{background-color:#135f7f}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb{background-color:#8e3e52}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar{background-color:rgba(142,62,82,0.54)}.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element{background-color:#8e3e52}.mat-slide-toggle:not(.mat-checked) .mat-ripple-element{background-color:#000}.mat-slide-toggle-thumb{box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);background-color:#fafafa}.mat-slide-toggle-bar{background-color:rgba(0,0,0,0.38)}.mat-slider-track-background{background-color:rgba(0,0,0,0.26)}.mat-primary .mat-slider-track-fill,.mat-primary .mat-slider-thumb,.mat-primary .mat-slider-thumb-label{background-color:#135f7f}.mat-primary .mat-slider-thumb-label-text{color:#fff}.mat-accent .mat-slider-track-fill,.mat-accent .mat-slider-thumb,.mat-accent .mat-slider-thumb-label{background-color:#006841}.mat-accent .mat-slider-thumb-label-text{color:#fff}.mat-warn .mat-slider-track-fill,.mat-warn .mat-slider-thumb,.mat-warn .mat-slider-thumb-label{background-color:#8e3e52}.mat-warn .mat-slider-thumb-label-text{color:#fff}.mat-slider-focus-ring{background-color:rgba(0,104,65,0.2)}.mat-slider:hover .mat-slider-track-background,.cdk-focused .mat-slider-track-background{background-color:rgba(0,0,0,0.38)}.mat-slider-disabled .mat-slider-track-background,.mat-slider-disabled .mat-slider-track-fill,.mat-slider-disabled .mat-slider-thumb{background-color:rgba(0,0,0,0.26)}.mat-slider-disabled:hover .mat-slider-track-background{background-color:rgba(0,0,0,0.26)}.mat-slider-min-value .mat-slider-focus-ring{background-color:rgba(0,0,0,0.12)}.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label{background-color:rgba(0,0,0,0.87)}.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label{background-color:rgba(0,0,0,0.26)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{border-color:rgba(0,0,0,0.26);background-color:transparent}.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb{border-color:rgba(0,0,0,0.38)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb{border-color:rgba(0,0,0,0.26)}.mat-slider-has-ticks .mat-slider-wrapper::after{border-color:rgba(0,0,0,0.7)}.mat-slider-horizontal .mat-slider-ticks{background-image:repeating-linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent);background-image:-moz-repeating-linear-gradient(0.0001deg, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent)}.mat-slider-vertical .mat-slider-ticks{background-image:repeating-linear-gradient(to bottom, rgba(0,0,0,0.7), rgba(0,0,0,0.7) 2px, transparent 0, transparent)}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover{background-color:rgba(0,0,0,0.04)}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:rgba(0,0,0,0.54)}.mat-step-header .mat-step-icon{background-color:rgba(0,0,0,0.54);color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#135f7f;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#8e3e52}.mat-step-header .mat-step-label.mat-step-label-active{color:rgba(0,0,0,0.87)}.mat-step-header .mat-step-label.mat-step-label-error{color:#8e3e52}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line::before{border-left-color:rgba(0,0,0,0.12)}.mat-horizontal-stepper-header::before,.mat-horizontal-stepper-header::after,.mat-stepper-horizontal-line{border-top-color:rgba(0,0,0,0.12)}.mat-sort-header-arrow{color:#757575}.mat-tab-nav-bar,.mat-tab-header{border-bottom:1px solid rgba(0,0,0,0.12)}.mat-tab-group-inverted-header .mat-tab-nav-bar,.mat-tab-group-inverted-header .mat-tab-header{border-top:1px solid rgba(0,0,0,0.12);border-bottom:none}.mat-tab-label,.mat-tab-link{color:rgba(0,0,0,0.87)}.mat-tab-label.mat-tab-disabled,.mat-tab-link.mat-tab-disabled{color:rgba(0,0,0,0.38)}.mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,0.87)}.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,0.38)}.mat-tab-group[class*='mat-background-'] .mat-tab-header,.mat-tab-nav-bar[class*='mat-background-']{border-bottom:none;border-top:none}.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(26,128,171,0.3)}.mat-tab-group.mat-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary .mat-ink-bar{background-color:#135f7f}.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(0,155,97,0.3)}.mat-tab-group.mat-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent .mat-ink-bar{background-color:#006841}.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(178,78,103,0.3)}.mat-tab-group.mat-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn .mat-ink-bar{background-color:#8e3e52}.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(26,128,171,0.3)}.mat-tab-group.mat-background-primary .mat-tab-header,.mat-tab-group.mat-background-primary .mat-tab-links,.mat-tab-group.mat-background-primary .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-primary .mat-tab-header,.mat-tab-nav-bar.mat-background-primary .mat-tab-links,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination{background-color:#135f7f}.mat-tab-group.mat-background-primary .mat-tab-label,.mat-tab-group.mat-background-primary .mat-tab-link,.mat-tab-nav-bar.mat-background-primary .mat-tab-label,.mat-tab-nav-bar.mat-background-primary .mat-tab-link{color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-primary .mat-ripple-element,.mat-tab-nav-bar.mat-background-primary .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(0,155,97,0.3)}.mat-tab-group.mat-background-accent .mat-tab-header,.mat-tab-group.mat-background-accent .mat-tab-links,.mat-tab-group.mat-background-accent .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-accent .mat-tab-header,.mat-tab-nav-bar.mat-background-accent .mat-tab-links,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination{background-color:#006841}.mat-tab-group.mat-background-accent .mat-tab-label,.mat-tab-group.mat-background-accent .mat-tab-link,.mat-tab-nav-bar.mat-background-accent .mat-tab-label,.mat-tab-nav-bar.mat-background-accent .mat-tab-link{color:#fff}.mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-accent .mat-ripple-element,.mat-tab-nav-bar.mat-background-accent .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(178,78,103,0.3)}.mat-tab-group.mat-background-warn .mat-tab-header,.mat-tab-group.mat-background-warn .mat-tab-links,.mat-tab-group.mat-background-warn .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-warn .mat-tab-header,.mat-tab-nav-bar.mat-background-warn .mat-tab-links,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination{background-color:#8e3e52}.mat-tab-group.mat-background-warn .mat-tab-label,.mat-tab-group.mat-background-warn .mat-tab-link,.mat-tab-nav-bar.mat-background-warn .mat-tab-label,.mat-tab-nav-bar.mat-background-warn .mat-tab-link{color:#fff}.mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled{color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(255,255,255,0.4)}.mat-tab-group.mat-background-warn .mat-ripple-element,.mat-tab-nav-bar.mat-background-warn .mat-ripple-element{background-color:rgba(255,255,255,0.12)}.mat-toolbar{background:#f5f5f5;color:rgba(0,0,0,0.87)}.mat-toolbar.mat-primary{background:#135f7f;color:#fff}.mat-toolbar.mat-accent{background:#006841;color:#fff}.mat-toolbar.mat-warn{background:#8e3e52;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-tooltip{background:rgba(97,97,97,0.9)}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:rgba(0,0,0,0.87)}.mat-snack-bar-container{color:rgba(255,255,255,0.7);background:#323232;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)}.mat-simple-snackbar-action{color:#006841}[color=primary]{color:#135f7f}[color=secondary]{color:#F99830}[color=warn]{color:#8e3e52}[color=accent]{color:#006841}[bgcolor=primary]{background-color:#135f7f}[bgcolor=warn]{background-color:#8e3e52}[bgcolor=accent]{background-color:#006841}.jstree-proton .jstree-clicked{background:#1a80ab !important}.jstree-proton :not(.jstree-disabled).jstree-hovered{background:#1a80ab !important;box-shadow:inset 0 0 1px #135f7f !important}.jstree-proton .jstree-disabled:hover{cursor:not-allowed}.dndFile{border:dashed 5px grey;padding:10px;text-align:center;opacity:0.5;font-size:15px;font-weight:bolder;margin:20px}.dndFileHighlighted{opacity:1 !important;border:dashed 5px #135f7f !important;color:#135f7f}.cdk-textarea-autosize{min-height:18px !important}
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 43cf240eb0ad583a8ad9ff7b69234bbada6fe330..68a9a5eb784e7a60968715064a708078de91eb99 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1439,4 +1439,12 @@ export const LANG_EN = {
     "circuitNotStarted": "The workflow has not yet started",
     "searchCommunicationMean": "Search communication mean",
     "searchExternalIdM2M": "Search M2GEC Identifier",
+    "ADD": "Add",
+    "UP": "Update",
+    "DEL": "Delete",
+    "LOGIN": "Login",
+    "LOGOUT": "Logout",
+    "VIEW": "View",
+    "ERROR": "Error",
+    "systemActions": "System action(s)",
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 9c2003316eda6d82d8ebce99f971278a5ecad570..79eda385c5244f8e28ae1ef0991031b0763d632a 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1479,4 +1479,12 @@ export const LANG_FR = {
     "circuitNotStarted": "Le circuit n'a pas encore commencé",
     "searchCommunicationMean": "Recherchez un moyen de communication",
     "searchExternalIdM2M": "Recherchez un identifiant M2GEC",
+    "ADD": "Ajout",
+    "UP": "Modification",
+    "DEL": "Suppression",
+    "LOGIN": "Connexion",
+    "LOGOUT": "Déconnexion",
+    "VIEW": "Visualisation",
+    "ERROR": "Erreur",
+    "systemActions": "Événement(s) système",
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 5db84f11afa687d7d32f64430dd16804c89e9892..f363d668ce22c1e6d3302aded45339bc20d06bdd 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1464,4 +1464,12 @@ export const LANG_NL = {
     "circuitNotStarted": "The workflow has not yet started", //_TO_TRANSLATE
     "searchCommunicationMean": "Search communication mean", //_TO_TRANSLATE
     "searchExternalIdM2M": "Search M2GEC Identifier", //_TO_TRANSLATE
+    "ADD": "Add", //_TO_TRANSLATE
+    "UP": "Update", //_TO_TRANSLATE
+    "DEL": "Delete", //_TO_TRANSLATE
+    "LOGIN": "Login", //_TO_TRANSLATE
+    "LOGOUT": "Logout", //_TO_TRANSLATE
+    "VIEW": "View", //_TO_TRANSLATE
+    "ERROR": "Error", //_TO_TRANSLATE
+    "systemActions": "System action(s)", //_TO_TRANSLATE
 };
diff --git a/src/frontend/plugins/sorting.pipe.ts b/src/frontend/plugins/sorting.pipe.ts
index d88119e85dd9517026faef2a6ac1eb4b0905281e..8c60342dae8b55bf019b2efd996da4f35be6b654 100755
--- a/src/frontend/plugins/sorting.pipe.ts
+++ b/src/frontend/plugins/sorting.pipe.ts
@@ -1,21 +1,28 @@
 import { Pipe } from '@angular/core';
 import { LatinisePipe } from "ngx-pipes";
+import { FunctionsService } from '../service/functions.service';
 
 @Pipe({ name: "sortBy" })
 export class SortPipe {
 
-	constructor(private latinisePipe: LatinisePipe) { }
+	constructor(
+		private latinisePipe: LatinisePipe,
+		public functions: FunctionsService
+		) { }
 
 
 	transform(array: Array<string>, args: string): Array<string> {
 		let normA = '';
 		let normB = '';
-		if (array !== undefined && array.length > 0) {
+		
+		if (!this.functions.empty(array)) {
 			array.sort((a: any, b: any) => {
 				if (args === undefined) {
 					normA = this.latinisePipe.transform(a).toLocaleLowerCase();
 					normB = this.latinisePipe.transform(b).toLocaleLowerCase();
 				} else {
+					a[args] = a[args] !== null ? a[args] : '';
+					b[args] = b[args] !== null ? b[args] : '';
 					normA = this.latinisePipe.transform(a[args]).toLocaleLowerCase();
 					normB = this.latinisePipe.transform(b[args]).toLocaleLowerCase();
 				}
diff --git a/src/frontend/service/filtersList.service.ts b/src/frontend/service/filtersList.service.ts
index 039b9598532cc93a1c49ce4196c376170a31d4bf..70c8d677efc4bfe8c89bfae45a258ce72676c030 100644
--- a/src/frontend/service/filtersList.service.ts
+++ b/src/frontend/service/filtersList.service.ts
@@ -16,6 +16,7 @@ interface listProperties {
     'subEntities': string[],
     'statuses': string[],
     'doctypes': string[],
+    'folders': string[],
 }
 
 @Injectable()
@@ -64,6 +65,7 @@ export class FiltersListService {
                 'subEntities': [],
                 'statuses': [],
                 'doctypes': [],
+                'folders': [],
             };
             this.listsProperties.push(listProperties);
             this.listsPropertiesIndex = this.listsProperties.length -1;
@@ -158,6 +160,14 @@ export class FiltersListService {
 
                 filters += '&doctypes=' + doct.join(',');
             }
+            if (this.listsProperties[this.listsPropertiesIndex].folders.length > 0) {
+                let folders: any[] = [];
+                this.listsProperties[this.listsPropertiesIndex].folders.forEach((element: any) => {
+                    folders.push(element.id);
+                });
+
+                filters += '&folders=' + folders.join(',');
+            }
         }
         return filters;
     }
diff --git a/src/frontend/service/functions.service.ts b/src/frontend/service/functions.service.ts
index c1e9b1bbf5b4c7c7803a976d6d4689bfc881c6ee..13b94132655ba902f193da8278930fd8b560906e 100644
--- a/src/frontend/service/functions.service.ts
+++ b/src/frontend/service/functions.service.ts
@@ -43,16 +43,29 @@ export class FunctionsService {
         }
     }
 
-    formatDateObjectToFrenchDateString(date: Date, limitMode: boolean = false) {
+    formatDateObjectToDateString(date: Date, limitMode: boolean = false, format:string = 'dd-mm-yyyy') {
         if (date !== null) {
-            let day = date.getDate();
-            let month = date.getMonth() + 1;
-            let year = date.getFullYear();
+            let formatDate: any[] = [];
+            format.split('-').forEach((element: any) => {
+                if (element === 'dd') {
+                    let day: any = date.getDate();
+                    day = ('00' + day).slice(-2);
+                    formatDate.push(day);
+                } else if (element === 'mm') {
+                    let month: any = date.getMonth() + 1;
+                    month = ('00' + month).slice(-2);
+                    formatDate.push(month);
+                } else if (element === 'yyyy') {
+                    let year: any = date.getFullYear();
+                    formatDate.push(year);
+                }
+            });
+
             let limit = '';
             if (limitMode) {
                 limit = ' 23:59:59';
             }
-            return `${('00' + day).slice(-2)}-${('00' + month).slice(-2)}-${year}${limit}`;
+            return `${formatDate.join('-')}${limit}`;
         } else {
             return date;
         }
diff --git a/src/frontend/service/privileges.service.ts b/src/frontend/service/privileges.service.ts
index 68b7ca039f59da2f6337fa36c3de2155dd5af3ae..6e4a731180841859ebcfc84adf482b61d9535cb4 100644
--- a/src/frontend/service/privileges.service.ts
+++ b/src/frontend/service/privileges.service.ts
@@ -271,7 +271,7 @@ export class PrivilegeService {
             "id": "view_history_batch",
             "label": this.lang.historyBatch,
             "comment": this.lang.historyBatchAdmin,
-            "route": "/administration/history",
+            "route": "/administration/history-batch",
             "unit": "supervision",
             "style": "fa fa-history",
             "angular" : true,